@optimizely-opal/opal-tool-ocp-sdk 1.0.0-OCP-1442.2 → 1.0.0-OCP-1442.3
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolLogger.d.ts","sourceRoot":"","sources":["../../src/logging/ToolLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AAEzC;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAyCtC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAE7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA0ClC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAO/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAQrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;
|
|
1
|
+
{"version":3,"file":"ToolLogger.d.ts","sourceRoot":"","sources":["../../src/logging/ToolLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AAEzC;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAyCtC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAE7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA0ClC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAO/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAQrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAoBrC;;OAEG;WACW,UAAU,CACtB,GAAG,EAAE,GAAG,CAAC,OAAO,GACf,IAAI;IAYP;;OAEG;WACW,WAAW,CACvB,GAAG,EAAE,GAAG,CAAC,OAAO,EAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,gBAAgB,CAAC,EAAE,MAAM,GACxB,IAAI;CAiBR"}
|
|
@@ -55,18 +55,18 @@ class ToolLogger {
|
|
|
55
55
|
return data;
|
|
56
56
|
}
|
|
57
57
|
if (typeof data === 'string') {
|
|
58
|
-
return data.length >
|
|
59
|
-
? `${data.substring(0,
|
|
58
|
+
return data.length > ToolLogger.MAX_PARAM_LENGTH
|
|
59
|
+
? `${data.substring(0, ToolLogger.MAX_PARAM_LENGTH)}... (truncated, ${data.length} chars total)`
|
|
60
60
|
: data;
|
|
61
61
|
}
|
|
62
62
|
if (typeof data === 'number' || typeof data === 'boolean') {
|
|
63
63
|
return data;
|
|
64
64
|
}
|
|
65
65
|
if (Array.isArray(data)) {
|
|
66
|
-
const truncated = data.slice(0,
|
|
67
|
-
const result = truncated.map((item) =>
|
|
68
|
-
if (data.length >
|
|
69
|
-
result.push(`... (${data.length -
|
|
66
|
+
const truncated = data.slice(0, ToolLogger.MAX_ARRAY_ITEMS);
|
|
67
|
+
const result = truncated.map((item) => ToolLogger.redactSensitiveData(item, maxDepth - 1));
|
|
68
|
+
if (data.length > ToolLogger.MAX_ARRAY_ITEMS) {
|
|
69
|
+
result.push(`... (${data.length - ToolLogger.MAX_ARRAY_ITEMS} more items truncated)`);
|
|
70
70
|
}
|
|
71
71
|
return result;
|
|
72
72
|
}
|
|
@@ -74,12 +74,12 @@ class ToolLogger {
|
|
|
74
74
|
const result = {};
|
|
75
75
|
for (const [key, value] of Object.entries(data)) {
|
|
76
76
|
// Check if this field contains sensitive data
|
|
77
|
-
const isSensitive =
|
|
77
|
+
const isSensitive = ToolLogger.isSensitiveField(key);
|
|
78
78
|
if (isSensitive) {
|
|
79
79
|
result[key] = '[REDACTED]';
|
|
80
80
|
}
|
|
81
81
|
else {
|
|
82
|
-
result[key] =
|
|
82
|
+
result[key] = ToolLogger.redactSensitiveData(value, maxDepth - 1);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
return result;
|
|
@@ -91,7 +91,7 @@ class ToolLogger {
|
|
|
91
91
|
*/
|
|
92
92
|
static isSensitiveField(fieldName) {
|
|
93
93
|
const lowerKey = fieldName.toLowerCase();
|
|
94
|
-
return
|
|
94
|
+
return ToolLogger.SENSITIVE_FIELDS.some((sensitiveField) => lowerKey.includes(sensitiveField));
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
97
97
|
* Creates a summary of request parameters
|
|
@@ -100,22 +100,28 @@ class ToolLogger {
|
|
|
100
100
|
if (!params) {
|
|
101
101
|
return null;
|
|
102
102
|
}
|
|
103
|
-
return
|
|
103
|
+
return ToolLogger.redactSensitiveData(params);
|
|
104
104
|
}
|
|
105
105
|
/**
|
|
106
106
|
* Calculates content length of response data
|
|
107
107
|
*/
|
|
108
|
-
static calculateContentLength(
|
|
109
|
-
if (!
|
|
108
|
+
static calculateContentLength(response) {
|
|
109
|
+
if (!response) {
|
|
110
110
|
return 0;
|
|
111
111
|
}
|
|
112
112
|
try {
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
if (response?.bodyJSON) {
|
|
114
|
+
const responseBodyJson = JSON.stringify(response.bodyJSON);
|
|
115
|
+
console.log('BodyJson length', responseBodyJson.length || 0);
|
|
116
|
+
return responseBodyJson.length;
|
|
117
|
+
}
|
|
115
118
|
}
|
|
116
119
|
catch {
|
|
120
|
+
console.log("Circular reference or JSON error, returning 'unknown'");
|
|
117
121
|
return 'unknown';
|
|
118
122
|
}
|
|
123
|
+
console.log('Body length', response.body?.length || 0);
|
|
124
|
+
return response.body?.length || 0;
|
|
119
125
|
}
|
|
120
126
|
/**
|
|
121
127
|
* Logs an incoming request
|
|
@@ -125,7 +131,7 @@ class ToolLogger {
|
|
|
125
131
|
const requestLog = {
|
|
126
132
|
event: 'opal_tool_request',
|
|
127
133
|
path: req.path,
|
|
128
|
-
parameters:
|
|
134
|
+
parameters: ToolLogger.createParameterSummary(params)
|
|
129
135
|
};
|
|
130
136
|
// Log with Zaius audience so developers only see requests for accounts they have access to
|
|
131
137
|
app_sdk_1.logger.info(app_sdk_1.LogVisibility.Zaius, JSON.stringify(requestLog));
|
|
@@ -134,13 +140,16 @@ class ToolLogger {
|
|
|
134
140
|
* Logs a successful response
|
|
135
141
|
*/
|
|
136
142
|
static logResponse(req, response, processingTimeMs) {
|
|
143
|
+
console.log('response', response);
|
|
144
|
+
console.log('response body json', response.bodyJSON);
|
|
145
|
+
console.log('response body', response.body);
|
|
137
146
|
const responseLog = {
|
|
138
147
|
event: 'opal_tool_response',
|
|
139
148
|
path: req.path,
|
|
140
149
|
duration: processingTimeMs ? `${processingTimeMs}ms` : undefined,
|
|
141
150
|
status: response.status,
|
|
142
151
|
contentType: response.headers?.get('content-type') || 'unknown',
|
|
143
|
-
contentLength:
|
|
152
|
+
contentLength: ToolLogger.calculateContentLength(response),
|
|
144
153
|
success: response.status >= 200 && response.status < 300
|
|
145
154
|
};
|
|
146
155
|
// Log with Zaius audience so developers only see requests for accounts they have access to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolLogger.js","sourceRoot":"","sources":["../../src/logging/ToolLogger.ts"],"names":[],"mappings":";;;AAAA,+CAA0D;AAG1D;;GAEG;AACH,MAAa,UAAU;IACb,MAAM,CAAU,gBAAgB,GAAG;QACzC,2BAA2B;QAC3B,UAAU;QACV,MAAM;QACN,QAAQ;QACR,KAAK;QACL,OAAO;QACP,MAAM;QACN,aAAa;QACb,cAAc;QACd,eAAe;QACf,SAAS;QACT,aAAa;QACb,eAAe;QACf,eAAe;QACf,eAAe;QAEf,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,KAAK;QACL,aAAa;QAEb,gBAAgB;QAChB,KAAK,EAAE,yBAAyB;QAChC,KAAK,EAAE,cAAc;QACrB,UAAU;QACV,KAAK,EAAE,gBAAgB;QACvB,OAAO;QACP,OAAO;QACP,SAAS;QAET,qBAAqB;QACrB,KAAK;QACL,KAAK;QACL,iBAAiB;QACjB,mBAAmB;QACnB,aAAa;QACb,gBAAgB;QAChB,KAAK;QACL,cAAc;KACf,CAAC;IAEM,MAAM,CAAU,gBAAgB,GAAG,GAAG,CAAC;IACvC,MAAM,CAAU,eAAe,GAAG,EAAE,CAAC;IAE7C;;OAEG;IACK,MAAM,CAAC,mBAAmB,CAAC,IAAS,EAAE,QAAQ,GAAG,CAAC;QACxD,IAAI,QAAQ,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"ToolLogger.js","sourceRoot":"","sources":["../../src/logging/ToolLogger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -60,8 +60,8 @@ export class ToolLogger {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
if (typeof data === 'string') {
|
|
63
|
-
return data.length >
|
|
64
|
-
? `${data.substring(0,
|
|
63
|
+
return data.length > ToolLogger.MAX_PARAM_LENGTH
|
|
64
|
+
? `${data.substring(0, ToolLogger.MAX_PARAM_LENGTH)}... (truncated, ${data.length} chars total)`
|
|
65
65
|
: data;
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -70,10 +70,10 @@ export class ToolLogger {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
if (Array.isArray(data)) {
|
|
73
|
-
const truncated = data.slice(0,
|
|
74
|
-
const result = truncated.map((item) =>
|
|
75
|
-
if (data.length >
|
|
76
|
-
result.push(`... (${data.length -
|
|
73
|
+
const truncated = data.slice(0, ToolLogger.MAX_ARRAY_ITEMS);
|
|
74
|
+
const result = truncated.map((item) => ToolLogger.redactSensitiveData(item, maxDepth - 1));
|
|
75
|
+
if (data.length > ToolLogger.MAX_ARRAY_ITEMS) {
|
|
76
|
+
result.push(`... (${data.length - ToolLogger.MAX_ARRAY_ITEMS} more items truncated)`);
|
|
77
77
|
}
|
|
78
78
|
return result;
|
|
79
79
|
}
|
|
@@ -82,12 +82,12 @@ export class ToolLogger {
|
|
|
82
82
|
const result: any = {};
|
|
83
83
|
for (const [key, value] of Object.entries(data)) {
|
|
84
84
|
// Check if this field contains sensitive data
|
|
85
|
-
const isSensitive =
|
|
85
|
+
const isSensitive = ToolLogger.isSensitiveField(key);
|
|
86
86
|
|
|
87
87
|
if (isSensitive) {
|
|
88
88
|
result[key] = '[REDACTED]';
|
|
89
89
|
} else {
|
|
90
|
-
result[key] =
|
|
90
|
+
result[key] = ToolLogger.redactSensitiveData(value, maxDepth - 1);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
return result;
|
|
@@ -101,7 +101,7 @@ export class ToolLogger {
|
|
|
101
101
|
*/
|
|
102
102
|
private static isSensitiveField(fieldName: string): boolean {
|
|
103
103
|
const lowerKey = fieldName.toLowerCase();
|
|
104
|
-
return
|
|
104
|
+
return ToolLogger.SENSITIVE_FIELDS.some((sensitiveField) =>
|
|
105
105
|
lowerKey.includes(sensitiveField)
|
|
106
106
|
);
|
|
107
107
|
}
|
|
@@ -114,23 +114,30 @@ export class ToolLogger {
|
|
|
114
114
|
return null;
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
return
|
|
117
|
+
return ToolLogger.redactSensitiveData(params);
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
/**
|
|
121
121
|
* Calculates content length of response data
|
|
122
122
|
*/
|
|
123
|
-
private static calculateContentLength(
|
|
124
|
-
if (!
|
|
123
|
+
private static calculateContentLength(response?: App.Response) {
|
|
124
|
+
if (!response) {
|
|
125
125
|
return 0;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
try {
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
if (response?.bodyJSON) {
|
|
130
|
+
const responseBodyJson = JSON.stringify(response.bodyJSON);
|
|
131
|
+
console.log('BodyJson length', responseBodyJson.length || 0);
|
|
132
|
+
return responseBodyJson.length;
|
|
133
|
+
}
|
|
131
134
|
} catch {
|
|
135
|
+
console.log("Circular reference or JSON error, returning 'unknown'");
|
|
132
136
|
return 'unknown';
|
|
133
137
|
}
|
|
138
|
+
|
|
139
|
+
console.log('Body length', response.body?.length || 0);
|
|
140
|
+
return response.body?.length || 0;
|
|
134
141
|
}
|
|
135
142
|
|
|
136
143
|
/**
|
|
@@ -143,7 +150,7 @@ export class ToolLogger {
|
|
|
143
150
|
const requestLog = {
|
|
144
151
|
event: 'opal_tool_request',
|
|
145
152
|
path: req.path,
|
|
146
|
-
parameters:
|
|
153
|
+
parameters: ToolLogger.createParameterSummary(params)
|
|
147
154
|
};
|
|
148
155
|
|
|
149
156
|
// Log with Zaius audience so developers only see requests for accounts they have access to
|
|
@@ -158,14 +165,16 @@ export class ToolLogger {
|
|
|
158
165
|
response: App.Response,
|
|
159
166
|
processingTimeMs?: number
|
|
160
167
|
): void {
|
|
161
|
-
|
|
168
|
+
console.log('response', response);
|
|
169
|
+
console.log('response body json', response.bodyJSON);
|
|
170
|
+
console.log('response body', response.body);
|
|
162
171
|
const responseLog = {
|
|
163
172
|
event: 'opal_tool_response',
|
|
164
173
|
path: req.path,
|
|
165
174
|
duration: processingTimeMs ? `${processingTimeMs}ms` : undefined,
|
|
166
175
|
status: response.status,
|
|
167
176
|
contentType: response.headers?.get('content-type') || 'unknown',
|
|
168
|
-
contentLength:
|
|
177
|
+
contentLength: ToolLogger.calculateContentLength(response),
|
|
169
178
|
success: response.status >= 200 && response.status < 300
|
|
170
179
|
};
|
|
171
180
|
|