@ogcio/building-blocks-sdk 0.2.39 → 0.2.40
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/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +7 -0
- package/dist/client/base-client.d.ts.map +1 -1
- package/dist/client/base-client.js +4 -1
- package/dist/client/base-client.js.map +1 -1
- package/dist/client/utils/client-utils.d.ts +0 -15
- package/dist/client/utils/client-utils.d.ts.map +1 -1
- package/dist/client/utils/client-utils.js +14 -34
- package/dist/client/utils/client-utils.js.map +1 -1
- package/package.json +2 -2
- package/src/client/base-client.ts +4 -1
- package/src/client/utils/client-utils.ts +17 -42
- package/dist/client/utils/client-utils.test.d.ts +0 -2
- package/dist/client/utils/client-utils.test.d.ts.map +0 -1
- package/dist/client/utils/client-utils.test.js +0 -118
- package/dist/client/utils/client-utils.test.js.map +0 -1
- package/src/client/utils/client-utils.test.ts +0 -136
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.40](https://github.com/ogcio/building-blocks-sdk/compare/@ogcio/building-blocks-sdk@v0.2.39...@ogcio/building-blocks-sdk@v0.2.40) (2025-07-02)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* removed response logging AB[#29456](https://github.com/ogcio/building-blocks-sdk/issues/29456) ([#227](https://github.com/ogcio/building-blocks-sdk/issues/227)) ([7ae885b](https://github.com/ogcio/building-blocks-sdk/commit/7ae885b1bbe5c3bd50fd470d58e37aa748c141df))
|
|
9
|
+
|
|
3
10
|
## [0.2.39](https://github.com/ogcio/building-blocks-sdk/compare/@ogcio/building-blocks-sdk@v0.2.38...@ogcio/building-blocks-sdk@v0.2.39) (2025-06-24)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../src/client/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAM3B,8BAAsB,UAAU,CAAC,CAAC,SAAS,EAAE;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,sBAAsB,CAAQ;IACtC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,oBAAoB,SAA4B;IAC1D,OAAO,CAAC,WAAW,CAA0C;IAC7D,SAAS,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IACrC,SAAS,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAE1B,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzC,EACV,OAAO,EACP,UAAU,EACV,MAAM,GACP,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,aAAa,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;
|
|
1
|
+
{"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../src/client/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAM3B,8BAAsB,UAAU,CAAC,CAAC,SAAS,EAAE;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,sBAAsB,CAAQ;IACtC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,oBAAoB,SAA4B;IAC1D,OAAO,CAAC,WAAW,CAA0C;IAC7D,SAAS,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IACrC,SAAS,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAE1B,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzC,EACV,OAAO,EACP,UAAU,EACV,MAAM,GACP,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,aAAa,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAmDM,WAAW;cAKF,QAAQ;IAmBjB,aAAa;IAIb,aAAa;IAIpB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc;YAIR,mBAAmB;IAQpB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAazD"}
|
|
@@ -43,7 +43,10 @@ export class BaseClient {
|
|
|
43
43
|
catch (_e) {
|
|
44
44
|
requestBody = clonedRequest.body;
|
|
45
45
|
}
|
|
46
|
-
this.logger.trace({
|
|
46
|
+
this.logger.trace({
|
|
47
|
+
body: requestBody ? "Is set" : "Not set",
|
|
48
|
+
url: clonedRequest.url,
|
|
49
|
+
}, `${this.serviceName} - executing request`);
|
|
47
50
|
}
|
|
48
51
|
if (this.token) {
|
|
49
52
|
request.headers.set("Authorization", `Bearer ${this.token}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/client/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,gBAAgB,GAKjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,MAAM,OAAgB,UAAU;IACtB,OAAO,CAAU;IACjB,WAAW,CAAC;IACZ,sBAAsB,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAU;IACf,oBAAoB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAClD,WAAW,CAA0C;IACnD,UAAU,CAAiB;IAC3B,WAAW,CAA2B;IACtC,MAAM,CAAU;IAEhB,MAAM,CAAqC;IAErD,YAAY,EACV,OAAO,EACP,UAAU,EACV,MAAM,GAKP;QACC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,MAAM,cAAc,GAAe;YACjC,SAAS,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC/B,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAK,GAA+B,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAC5D,MAAM,IAAI,gBAAgB,EAAE,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;oBACtC,IAAI,WAAW,GAAG,IAAI,CAAC;oBACvB,IAAI,CAAC;wBACH,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;oBAC3C,CAAC;oBAAC,OAAO,EAAE,EAAE,CAAC;wBACZ,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;oBACnC,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,
|
|
1
|
+
{"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/client/base-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,21 +13,6 @@ export declare function preparePaginationParams(paginationParams?: PaginationPar
|
|
|
13
13
|
offset?: string;
|
|
14
14
|
limit?: string;
|
|
15
15
|
};
|
|
16
|
-
/**
|
|
17
|
-
* Performs shallow redaction of specified fields from the input data.
|
|
18
|
-
*
|
|
19
|
-
* Behavior:
|
|
20
|
-
* - If `data` is an object, returns a new object with keys in `keysToRemove` removed (shallow only).
|
|
21
|
-
* - If `data` is an array, returns a new array where:
|
|
22
|
-
* - Each element that is an object has keys in `keysToRemove` removed.
|
|
23
|
-
* - Non-object elements are omitted from the output array.
|
|
24
|
-
* - For all other types (including null/undefined), returns an empty object.
|
|
25
|
-
*
|
|
26
|
-
* @param {unknown} data - The input data to redact fields from. Can be an object, array, or any other type.
|
|
27
|
-
* @param {string[]} keysToRemove - Array of keys to be removed from the object(s).
|
|
28
|
-
* @returns {Record<string, unknown> | Record<string, unknown>[]} The redacted data: a new object or array of objects without the specified keys, or an empty object.
|
|
29
|
-
*/
|
|
30
|
-
export declare function redactFields(data: unknown, keysToRemove: string[]): Record<string, unknown> | Record<string, unknown>[];
|
|
31
16
|
export declare function formatResponse<G extends Record<string | number, any>, O>(response: FetchResponse<G, O, "application/json">, serviceName: string, logger?: Logger): DataResponseValue<G, O>;
|
|
32
17
|
export declare function formatError<G, O>(reason: unknown, serviceName: string, logger?: Logger): DataResponseValue<G, O>;
|
|
33
18
|
export declare function parseJwtToken(token: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-utils.d.ts","sourceRoot":"","sources":["../../../src/client/utils/client-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,eAAe,EACf,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,eAAe,CACnD,UAAU,CACR,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAC3D,kBAAkB,CACnB,EACD,CAAC,CACF,GAAG;IACF,KAAK,EAAE,eAAe,CACpB,UAAU,CACR,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAC9D,kBAAkB,CACnB,EACD,CAAC,CACF,CAAC;CACH,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,sBAEzE;AAED,wBAAgB,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAYA;
|
|
1
|
+
{"version":3,"file":"client-utils.d.ts","sourceRoot":"","sources":["../../../src/client/utils/client-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,eAAe,EACf,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,eAAe,CACnD,UAAU,CACR,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAC3D,kBAAkB,CACnB,EACD,CAAC,CACF,GAAG;IACF,KAAK,EAAE,eAAe,CACpB,UAAU,CACR,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAC9D,kBAAkB,CACnB,EACD,CAAC,CACF,CAAC;CACH,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,sBAEzE;AAED,wBAAgB,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAYA;AAGD,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EACtE,QAAQ,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,EACjD,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAmDzB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC9B,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAKzB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAeA;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV,MAAM,CAcR;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIhD"}
|
|
@@ -11,35 +11,6 @@ export function preparePaginationParams(paginationParams) {
|
|
|
11
11
|
}
|
|
12
12
|
return output;
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Performs shallow redaction of specified fields from the input data.
|
|
16
|
-
*
|
|
17
|
-
* Behavior:
|
|
18
|
-
* - If `data` is an object, returns a new object with keys in `keysToRemove` removed (shallow only).
|
|
19
|
-
* - If `data` is an array, returns a new array where:
|
|
20
|
-
* - Each element that is an object has keys in `keysToRemove` removed.
|
|
21
|
-
* - Non-object elements are omitted from the output array.
|
|
22
|
-
* - For all other types (including null/undefined), returns an empty object.
|
|
23
|
-
*
|
|
24
|
-
* @param {unknown} data - The input data to redact fields from. Can be an object, array, or any other type.
|
|
25
|
-
* @param {string[]} keysToRemove - Array of keys to be removed from the object(s).
|
|
26
|
-
* @returns {Record<string, unknown> | Record<string, unknown>[]} The redacted data: a new object or array of objects without the specified keys, or an empty object.
|
|
27
|
-
*/
|
|
28
|
-
export function redactFields(data, keysToRemove) {
|
|
29
|
-
let redactedData = {};
|
|
30
|
-
if (Array.isArray(data)) {
|
|
31
|
-
redactedData = [];
|
|
32
|
-
for (const d of data) {
|
|
33
|
-
if (d && typeof d === "object") {
|
|
34
|
-
redactedData.push(Object.fromEntries(Object.entries(d).filter(([key]) => !keysToRemove.includes(key))));
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
else if (data && typeof data === "object") {
|
|
39
|
-
redactedData = Object.fromEntries(Object.entries(data).filter(([key]) => !keysToRemove.includes(key)));
|
|
40
|
-
}
|
|
41
|
-
return redactedData;
|
|
42
|
-
}
|
|
43
14
|
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
44
15
|
export function formatResponse(response, serviceName, logger) {
|
|
45
16
|
let outputData = undefined;
|
|
@@ -48,7 +19,13 @@ export function formatResponse(response, serviceName, logger) {
|
|
|
48
19
|
logger?.trace(`${serviceName} - Undefined response`);
|
|
49
20
|
return {};
|
|
50
21
|
}
|
|
51
|
-
|
|
22
|
+
// Log response format without leaking data
|
|
23
|
+
const toLogResponse = {
|
|
24
|
+
data: response.data ? "Is set" : "Not set",
|
|
25
|
+
error: response.error ? "Is set" : "Not set",
|
|
26
|
+
response: response.response ? "Is set" : "Not set",
|
|
27
|
+
};
|
|
28
|
+
logger?.trace({ responseFormat: toLogResponse }, `${serviceName} - Raw response`);
|
|
52
29
|
if (response.data) {
|
|
53
30
|
const dataEntries = Object.entries(response.data);
|
|
54
31
|
// by docs the body should contain a "data"
|
|
@@ -65,11 +42,14 @@ export function formatResponse(response, serviceName, logger) {
|
|
|
65
42
|
metadata: outputMetadata,
|
|
66
43
|
error: response.error,
|
|
67
44
|
};
|
|
45
|
+
// Log response format without leaking data
|
|
46
|
+
const toLogFormattedResponse = {
|
|
47
|
+
data: formattedResponse.data ? "Is set" : "Not set",
|
|
48
|
+
metadata: formattedResponse.metadata ? "Is set" : "Not set",
|
|
49
|
+
error: formattedResponse.error ? "Is set" : "Not set",
|
|
50
|
+
};
|
|
68
51
|
logger?.trace({
|
|
69
|
-
|
|
70
|
-
"receiverFullName",
|
|
71
|
-
"subject",
|
|
72
|
-
]),
|
|
52
|
+
responseFormat: toLogFormattedResponse,
|
|
73
53
|
}, `${serviceName} - Formatted response`);
|
|
74
54
|
return formattedResponse;
|
|
75
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-utils.js","sourceRoot":"","sources":["../../../src/client/utils/client-utils.ts"],"names":[],"mappings":"AA+BA,MAAM,UAAU,mBAAmB,CAAC,QAAsC;IACxE,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,gBAAmC;IAIzE,MAAM,MAAM,GAAwC,EAAE,CAAC;IAEvD,IAAI,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,gBAAgB,EAAE,KAAK,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"client-utils.js","sourceRoot":"","sources":["../../../src/client/utils/client-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ogcio/building-blocks-sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.40",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@ogcio/analytics-sdk": "0.
|
|
8
|
+
"@ogcio/analytics-sdk": "^0.2.0",
|
|
9
9
|
"@sinclair/typebox": "^0.34.21",
|
|
10
10
|
"commander": "^13.1.0",
|
|
11
11
|
"http-errors": "^2.0.0",
|
|
@@ -64,7 +64,10 @@ export abstract class BaseClient<T extends {}> {
|
|
|
64
64
|
requestBody = clonedRequest.body;
|
|
65
65
|
}
|
|
66
66
|
this.logger.trace(
|
|
67
|
-
{
|
|
67
|
+
{
|
|
68
|
+
body: requestBody ? "Is set" : "Not set",
|
|
69
|
+
url: clonedRequest.url,
|
|
70
|
+
},
|
|
68
71
|
`${this.serviceName} - executing request`,
|
|
69
72
|
);
|
|
70
73
|
}
|
|
@@ -50,42 +50,6 @@ export function preparePaginationParams(paginationParams?: PaginationParams): {
|
|
|
50
50
|
return output;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
/**
|
|
54
|
-
* Performs shallow redaction of specified fields from the input data.
|
|
55
|
-
*
|
|
56
|
-
* Behavior:
|
|
57
|
-
* - If `data` is an object, returns a new object with keys in `keysToRemove` removed (shallow only).
|
|
58
|
-
* - If `data` is an array, returns a new array where:
|
|
59
|
-
* - Each element that is an object has keys in `keysToRemove` removed.
|
|
60
|
-
* - Non-object elements are omitted from the output array.
|
|
61
|
-
* - For all other types (including null/undefined), returns an empty object.
|
|
62
|
-
*
|
|
63
|
-
* @param {unknown} data - The input data to redact fields from. Can be an object, array, or any other type.
|
|
64
|
-
* @param {string[]} keysToRemove - Array of keys to be removed from the object(s).
|
|
65
|
-
* @returns {Record<string, unknown> | Record<string, unknown>[]} The redacted data: a new object or array of objects without the specified keys, or an empty object.
|
|
66
|
-
*/
|
|
67
|
-
export function redactFields(data: unknown, keysToRemove: string[]) {
|
|
68
|
-
let redactedData: Record<string, unknown> | Record<string, unknown>[] = {};
|
|
69
|
-
if (Array.isArray(data)) {
|
|
70
|
-
redactedData = [];
|
|
71
|
-
for (const d of data) {
|
|
72
|
-
if (d && typeof d === "object") {
|
|
73
|
-
redactedData.push(
|
|
74
|
-
Object.fromEntries(
|
|
75
|
-
Object.entries(d).filter(([key]) => !keysToRemove.includes(key)),
|
|
76
|
-
),
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
} else if (data && typeof data === "object") {
|
|
81
|
-
redactedData = Object.fromEntries(
|
|
82
|
-
Object.entries(data).filter(([key]) => !keysToRemove.includes(key)),
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return redactedData;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
53
|
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
90
54
|
export function formatResponse<G extends Record<string | number, any>, O>(
|
|
91
55
|
response: FetchResponse<G, O, "application/json">,
|
|
@@ -99,8 +63,16 @@ export function formatResponse<G extends Record<string | number, any>, O>(
|
|
|
99
63
|
logger?.trace(`${serviceName} - Undefined response`);
|
|
100
64
|
return {} as DataResponseValue<G, O>;
|
|
101
65
|
}
|
|
102
|
-
|
|
103
|
-
|
|
66
|
+
// Log response format without leaking data
|
|
67
|
+
const toLogResponse = {
|
|
68
|
+
data: response.data ? "Is set" : "Not set",
|
|
69
|
+
error: response.error ? "Is set" : "Not set",
|
|
70
|
+
response: response.response ? "Is set" : "Not set",
|
|
71
|
+
};
|
|
72
|
+
logger?.trace(
|
|
73
|
+
{ responseFormat: toLogResponse },
|
|
74
|
+
`${serviceName} - Raw response`,
|
|
75
|
+
);
|
|
104
76
|
if (response.data) {
|
|
105
77
|
const dataEntries = Object.entries(response.data);
|
|
106
78
|
// by docs the body should contain a "data"
|
|
@@ -120,12 +92,15 @@ export function formatResponse<G extends Record<string | number, any>, O>(
|
|
|
120
92
|
error: response.error,
|
|
121
93
|
} as unknown as DataResponseValue<G, O>;
|
|
122
94
|
|
|
95
|
+
// Log response format without leaking data
|
|
96
|
+
const toLogFormattedResponse = {
|
|
97
|
+
data: formattedResponse.data ? "Is set" : "Not set",
|
|
98
|
+
metadata: formattedResponse.metadata ? "Is set" : "Not set",
|
|
99
|
+
error: formattedResponse.error ? "Is set" : "Not set",
|
|
100
|
+
};
|
|
123
101
|
logger?.trace(
|
|
124
102
|
{
|
|
125
|
-
|
|
126
|
-
"receiverFullName",
|
|
127
|
-
"subject",
|
|
128
|
-
]),
|
|
103
|
+
responseFormat: toLogFormattedResponse,
|
|
129
104
|
},
|
|
130
105
|
`${serviceName} - Formatted response`,
|
|
131
106
|
);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-utils.test.d.ts","sourceRoot":"","sources":["../../../src/client/utils/client-utils.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { redactFields } from "./client-utils.js";
|
|
3
|
-
describe(redactFields.name, () => {
|
|
4
|
-
describe("object input", () => {
|
|
5
|
-
it("removes specified keys from an object (happy case)", () => {
|
|
6
|
-
const obj = { a: 1, b: 2, c: 3 };
|
|
7
|
-
const result = redactFields(obj, ["b", "c"]);
|
|
8
|
-
expect(result).toEqual({ a: 1 });
|
|
9
|
-
});
|
|
10
|
-
it("returns full object if keysToRemove is empty", () => {
|
|
11
|
-
const obj = { a: 1, b: 2 };
|
|
12
|
-
const result = redactFields(obj, []);
|
|
13
|
-
expect(result).toEqual(obj);
|
|
14
|
-
});
|
|
15
|
-
it("returns full object if keysToRemove keys are not in object", () => {
|
|
16
|
-
const obj = { a: 1, b: 2 };
|
|
17
|
-
const result = redactFields(obj, ["x", "y"]);
|
|
18
|
-
expect(result).toEqual(obj);
|
|
19
|
-
});
|
|
20
|
-
it("works with keysToRemove partially present", () => {
|
|
21
|
-
const obj = { a: 1, b: 2, c: 3 };
|
|
22
|
-
const result = redactFields(obj, ["b", "x"]);
|
|
23
|
-
expect(result).toEqual({ a: 1, c: 3 });
|
|
24
|
-
});
|
|
25
|
-
it("returns empty object if all keys removed", () => {
|
|
26
|
-
const obj = { a: 1 };
|
|
27
|
-
const result = redactFields(obj, ["a"]);
|
|
28
|
-
expect(result).toEqual({});
|
|
29
|
-
});
|
|
30
|
-
it("handles non-object input (string) gracefully", () => {
|
|
31
|
-
const result = redactFields("string", ["a"]);
|
|
32
|
-
expect(result).toEqual({});
|
|
33
|
-
});
|
|
34
|
-
it("handles non-object input (number) gracefully", () => {
|
|
35
|
-
const result = redactFields(123, ["a"]);
|
|
36
|
-
expect(result).toEqual({});
|
|
37
|
-
});
|
|
38
|
-
it("does not throw if keysToRemove contains duplicates", () => {
|
|
39
|
-
const obj = { a: 1, b: 2, c: 3 };
|
|
40
|
-
const result = redactFields(obj, ["b", "b", "c"]);
|
|
41
|
-
expect(result).toEqual({ a: 1 });
|
|
42
|
-
});
|
|
43
|
-
it("returns empty object if input is empty object", () => {
|
|
44
|
-
const obj = {};
|
|
45
|
-
const result = redactFields(obj, ["a"]);
|
|
46
|
-
expect(result).toEqual({});
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
describe("array input", () => {
|
|
50
|
-
it("removes specified keys from array of objects (happy case)", () => {
|
|
51
|
-
const arr = [
|
|
52
|
-
{ a: 1, b: 2, c: 3 },
|
|
53
|
-
{ a: 4, b: 5, c: 6 },
|
|
54
|
-
];
|
|
55
|
-
const result = redactFields(arr, ["b", "c"]);
|
|
56
|
-
expect(result).toEqual([{ a: 1 }, { a: 4 }]);
|
|
57
|
-
});
|
|
58
|
-
it("returns full array if keysToRemove is empty", () => {
|
|
59
|
-
const arr = [
|
|
60
|
-
{ a: 1, b: 2 },
|
|
61
|
-
{ a: 3, b: 4 },
|
|
62
|
-
];
|
|
63
|
-
const result = redactFields(arr, []);
|
|
64
|
-
expect(result).toEqual(arr);
|
|
65
|
-
});
|
|
66
|
-
it("returns full array if keysToRemove keys are not in objects", () => {
|
|
67
|
-
const arr = [
|
|
68
|
-
{ a: 1, b: 2 },
|
|
69
|
-
{ a: 3, b: 4 },
|
|
70
|
-
];
|
|
71
|
-
const result = redactFields(arr, ["x", "y"]);
|
|
72
|
-
expect(result).toEqual(arr);
|
|
73
|
-
});
|
|
74
|
-
it("works with keysToRemove partially present", () => {
|
|
75
|
-
const arr = [
|
|
76
|
-
{ a: 1, b: 2, c: 3 },
|
|
77
|
-
{ a: 4, b: 5, c: 6 },
|
|
78
|
-
];
|
|
79
|
-
const result = redactFields(arr, ["b", "x"]);
|
|
80
|
-
expect(result).toEqual([
|
|
81
|
-
{ a: 1, c: 3 },
|
|
82
|
-
{ a: 4, c: 6 },
|
|
83
|
-
]);
|
|
84
|
-
});
|
|
85
|
-
it("returns array of empty objects if all keys removed", () => {
|
|
86
|
-
const arr = [{ a: 1 }, { a: 2 }];
|
|
87
|
-
const result = redactFields(arr, ["a"]);
|
|
88
|
-
expect(result).toEqual([{}, {}]);
|
|
89
|
-
});
|
|
90
|
-
it("handles non-object items in array gracefully", () => {
|
|
91
|
-
const arr = [{ a: 1, b: 2 }, "string", 123, null, { a: 3, b: 4 }];
|
|
92
|
-
const result = redactFields(arr, ["b"]);
|
|
93
|
-
expect(result).toEqual([{ a: 1 }, { a: 3 }]);
|
|
94
|
-
});
|
|
95
|
-
it("does not throw if keysToRemove contains duplicates", () => {
|
|
96
|
-
const arr = [
|
|
97
|
-
{ a: 1, b: 2, c: 3 },
|
|
98
|
-
{ a: 4, b: 5, c: 6 },
|
|
99
|
-
];
|
|
100
|
-
const result = redactFields(arr, ["b", "b", "c"]);
|
|
101
|
-
expect(result).toEqual([{ a: 1 }, { a: 4 }]);
|
|
102
|
-
});
|
|
103
|
-
it("returns empty array if input is empty array", () => {
|
|
104
|
-
const arr = [];
|
|
105
|
-
const result = redactFields(arr, ["a"]);
|
|
106
|
-
expect(result).toEqual([]);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
it("handles null input gracefully", () => {
|
|
110
|
-
const result = redactFields(null, ["a"]);
|
|
111
|
-
expect(result).toEqual({});
|
|
112
|
-
});
|
|
113
|
-
it("handles undefined input gracefully", () => {
|
|
114
|
-
const result = redactFields(undefined, ["a"]);
|
|
115
|
-
expect(result).toEqual({});
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
//# sourceMappingURL=client-utils.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-utils.test.js","sourceRoot":"","sources":["../../../src/client/utils/client-utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { redactFields } from "./client-utils.js";
|
|
3
|
-
|
|
4
|
-
describe(redactFields.name, () => {
|
|
5
|
-
describe("object input", () => {
|
|
6
|
-
it("removes specified keys from an object (happy case)", () => {
|
|
7
|
-
const obj = { a: 1, b: 2, c: 3 };
|
|
8
|
-
const result = redactFields(obj, ["b", "c"]);
|
|
9
|
-
expect(result).toEqual({ a: 1 });
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it("returns full object if keysToRemove is empty", () => {
|
|
13
|
-
const obj = { a: 1, b: 2 };
|
|
14
|
-
const result = redactFields(obj, []);
|
|
15
|
-
expect(result).toEqual(obj);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it("returns full object if keysToRemove keys are not in object", () => {
|
|
19
|
-
const obj = { a: 1, b: 2 };
|
|
20
|
-
const result = redactFields(obj, ["x", "y"]);
|
|
21
|
-
expect(result).toEqual(obj);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("works with keysToRemove partially present", () => {
|
|
25
|
-
const obj = { a: 1, b: 2, c: 3 };
|
|
26
|
-
const result = redactFields(obj, ["b", "x"]);
|
|
27
|
-
expect(result).toEqual({ a: 1, c: 3 });
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("returns empty object if all keys removed", () => {
|
|
31
|
-
const obj = { a: 1 };
|
|
32
|
-
const result = redactFields(obj, ["a"]);
|
|
33
|
-
expect(result).toEqual({});
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it("handles non-object input (string) gracefully", () => {
|
|
37
|
-
const result = redactFields("string", ["a"]);
|
|
38
|
-
expect(result).toEqual({});
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it("handles non-object input (number) gracefully", () => {
|
|
42
|
-
const result = redactFields(123, ["a"]);
|
|
43
|
-
expect(result).toEqual({});
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it("does not throw if keysToRemove contains duplicates", () => {
|
|
47
|
-
const obj = { a: 1, b: 2, c: 3 };
|
|
48
|
-
const result = redactFields(obj, ["b", "b", "c"]);
|
|
49
|
-
expect(result).toEqual({ a: 1 });
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it("returns empty object if input is empty object", () => {
|
|
53
|
-
const obj = {};
|
|
54
|
-
const result = redactFields(obj, ["a"]);
|
|
55
|
-
expect(result).toEqual({});
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
describe("array input", () => {
|
|
60
|
-
it("removes specified keys from array of objects (happy case)", () => {
|
|
61
|
-
const arr = [
|
|
62
|
-
{ a: 1, b: 2, c: 3 },
|
|
63
|
-
{ a: 4, b: 5, c: 6 },
|
|
64
|
-
];
|
|
65
|
-
const result = redactFields(arr, ["b", "c"]);
|
|
66
|
-
expect(result).toEqual([{ a: 1 }, { a: 4 }]);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
it("returns full array if keysToRemove is empty", () => {
|
|
70
|
-
const arr = [
|
|
71
|
-
{ a: 1, b: 2 },
|
|
72
|
-
{ a: 3, b: 4 },
|
|
73
|
-
];
|
|
74
|
-
const result = redactFields(arr, []);
|
|
75
|
-
expect(result).toEqual(arr);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it("returns full array if keysToRemove keys are not in objects", () => {
|
|
79
|
-
const arr = [
|
|
80
|
-
{ a: 1, b: 2 },
|
|
81
|
-
{ a: 3, b: 4 },
|
|
82
|
-
];
|
|
83
|
-
const result = redactFields(arr, ["x", "y"]);
|
|
84
|
-
expect(result).toEqual(arr);
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
it("works with keysToRemove partially present", () => {
|
|
88
|
-
const arr = [
|
|
89
|
-
{ a: 1, b: 2, c: 3 },
|
|
90
|
-
{ a: 4, b: 5, c: 6 },
|
|
91
|
-
];
|
|
92
|
-
const result = redactFields(arr, ["b", "x"]);
|
|
93
|
-
expect(result).toEqual([
|
|
94
|
-
{ a: 1, c: 3 },
|
|
95
|
-
{ a: 4, c: 6 },
|
|
96
|
-
]);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it("returns array of empty objects if all keys removed", () => {
|
|
100
|
-
const arr = [{ a: 1 }, { a: 2 }];
|
|
101
|
-
const result = redactFields(arr, ["a"]);
|
|
102
|
-
expect(result).toEqual([{}, {}]);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it("handles non-object items in array gracefully", () => {
|
|
106
|
-
const arr = [{ a: 1, b: 2 }, "string", 123, null, { a: 3, b: 4 }];
|
|
107
|
-
const result = redactFields(arr, ["b"]);
|
|
108
|
-
expect(result).toEqual([{ a: 1 }, { a: 3 }]);
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
it("does not throw if keysToRemove contains duplicates", () => {
|
|
112
|
-
const arr = [
|
|
113
|
-
{ a: 1, b: 2, c: 3 },
|
|
114
|
-
{ a: 4, b: 5, c: 6 },
|
|
115
|
-
];
|
|
116
|
-
const result = redactFields(arr, ["b", "b", "c"]);
|
|
117
|
-
expect(result).toEqual([{ a: 1 }, { a: 4 }]);
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it("returns empty array if input is empty array", () => {
|
|
121
|
-
const arr: unknown[] = [];
|
|
122
|
-
const result = redactFields(arr, ["a"]);
|
|
123
|
-
expect(result).toEqual([]);
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
it("handles null input gracefully", () => {
|
|
128
|
-
const result = redactFields(null, ["a"]);
|
|
129
|
-
expect(result).toEqual({});
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it("handles undefined input gracefully", () => {
|
|
133
|
-
const result = redactFields(undefined, ["a"]);
|
|
134
|
-
expect(result).toEqual({});
|
|
135
|
-
});
|
|
136
|
-
});
|