@optimizely-opal/opal-tool-ocp-sdk 1.0.0-beta.1 → 1.0.0-beta.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.
Files changed (74) hide show
  1. package/README.md +169 -3
  2. package/dist/auth/AuthUtils.d.ts +12 -5
  3. package/dist/auth/AuthUtils.d.ts.map +1 -1
  4. package/dist/auth/AuthUtils.js +80 -25
  5. package/dist/auth/AuthUtils.js.map +1 -1
  6. package/dist/auth/AuthUtils.test.js +161 -117
  7. package/dist/auth/AuthUtils.test.js.map +1 -1
  8. package/dist/function/GlobalToolFunction.d.ts +5 -3
  9. package/dist/function/GlobalToolFunction.d.ts.map +1 -1
  10. package/dist/function/GlobalToolFunction.js +32 -8
  11. package/dist/function/GlobalToolFunction.js.map +1 -1
  12. package/dist/function/GlobalToolFunction.test.js +73 -12
  13. package/dist/function/GlobalToolFunction.test.js.map +1 -1
  14. package/dist/function/ToolFunction.d.ts +11 -4
  15. package/dist/function/ToolFunction.d.ts.map +1 -1
  16. package/dist/function/ToolFunction.js +45 -9
  17. package/dist/function/ToolFunction.js.map +1 -1
  18. package/dist/function/ToolFunction.test.js +278 -11
  19. package/dist/function/ToolFunction.test.js.map +1 -1
  20. package/dist/index.d.ts +2 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +3 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/logging/ToolLogger.d.ts +42 -0
  25. package/dist/logging/ToolLogger.d.ts.map +1 -0
  26. package/dist/logging/ToolLogger.js +255 -0
  27. package/dist/logging/ToolLogger.js.map +1 -0
  28. package/dist/logging/ToolLogger.test.d.ts +2 -0
  29. package/dist/logging/ToolLogger.test.d.ts.map +1 -0
  30. package/dist/logging/ToolLogger.test.js +864 -0
  31. package/dist/logging/ToolLogger.test.js.map +1 -0
  32. package/dist/service/Service.d.ts +88 -2
  33. package/dist/service/Service.d.ts.map +1 -1
  34. package/dist/service/Service.js +228 -39
  35. package/dist/service/Service.js.map +1 -1
  36. package/dist/service/Service.test.js +558 -22
  37. package/dist/service/Service.test.js.map +1 -1
  38. package/dist/types/Models.d.ts +7 -1
  39. package/dist/types/Models.d.ts.map +1 -1
  40. package/dist/types/Models.js +5 -1
  41. package/dist/types/Models.js.map +1 -1
  42. package/dist/types/ToolError.d.ts +72 -0
  43. package/dist/types/ToolError.d.ts.map +1 -0
  44. package/dist/types/ToolError.js +107 -0
  45. package/dist/types/ToolError.js.map +1 -0
  46. package/dist/types/ToolError.test.d.ts +2 -0
  47. package/dist/types/ToolError.test.d.ts.map +1 -0
  48. package/dist/types/ToolError.test.js +185 -0
  49. package/dist/types/ToolError.test.js.map +1 -0
  50. package/dist/validation/ParameterValidator.d.ts +31 -0
  51. package/dist/validation/ParameterValidator.d.ts.map +1 -0
  52. package/dist/validation/ParameterValidator.js +129 -0
  53. package/dist/validation/ParameterValidator.js.map +1 -0
  54. package/dist/validation/ParameterValidator.test.d.ts +2 -0
  55. package/dist/validation/ParameterValidator.test.d.ts.map +1 -0
  56. package/dist/validation/ParameterValidator.test.js +323 -0
  57. package/dist/validation/ParameterValidator.test.js.map +1 -0
  58. package/package.json +3 -3
  59. package/src/auth/AuthUtils.test.ts +176 -157
  60. package/src/auth/AuthUtils.ts +96 -33
  61. package/src/function/GlobalToolFunction.test.ts +78 -14
  62. package/src/function/GlobalToolFunction.ts +46 -11
  63. package/src/function/ToolFunction.test.ts +298 -13
  64. package/src/function/ToolFunction.ts +61 -13
  65. package/src/index.ts +2 -1
  66. package/src/logging/ToolLogger.test.ts +1020 -0
  67. package/src/logging/ToolLogger.ts +292 -0
  68. package/src/service/Service.test.ts +712 -28
  69. package/src/service/Service.ts +288 -38
  70. package/src/types/Models.ts +8 -1
  71. package/src/types/ToolError.test.ts +222 -0
  72. package/src/types/ToolError.ts +125 -0
  73. package/src/validation/ParameterValidator.test.ts +371 -0
  74. package/src/validation/ParameterValidator.ts +150 -0
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToolLogger = void 0;
4
+ const app_sdk_1 = require("@zaiusinc/app-sdk");
5
+ const MAX_PARAM_LOG_LENGTH = 128;
6
+ const MAX_BODY_LOG_LENGTH = 256;
7
+ const MAX_ARRAY_ITEMS = 2;
8
+ /**
9
+ * Utility class for logging Opal tool requests and responses with security considerations
10
+ */
11
+ class ToolLogger {
12
+ static SENSITIVE_FIELDS = [
13
+ // Authentication / secrets
14
+ 'password',
15
+ 'pass',
16
+ 'secret',
17
+ 'key',
18
+ 'token',
19
+ 'auth',
20
+ 'credentials',
21
+ 'access_token',
22
+ 'refresh_token',
23
+ 'api_key',
24
+ 'private_key',
25
+ 'client_secret',
26
+ 'session_token',
27
+ 'authorization',
28
+ // Payment-related
29
+ 'card_number',
30
+ 'credit_card',
31
+ 'cvv',
32
+ 'expiry_date',
33
+ // Personal info
34
+ 'ssn', // social security number
35
+ 'nid', // national ID
36
+ 'passport',
37
+ 'dob', // date of birth
38
+ 'email',
39
+ 'phone',
40
+ 'address',
41
+ // Misc / environment
42
+ 'otp',
43
+ 'pin',
44
+ 'security_answer',
45
+ 'security_question',
46
+ 'signing_key',
47
+ 'encryption_key',
48
+ 'jwt',
49
+ 'bearer_token'
50
+ ];
51
+ /**
52
+ * Redacts sensitive data from an object
53
+ */
54
+ static redactSensitiveDataAndTruncate(data, maxDepth = 5, accumulatedLength = 0) {
55
+ if (accumulatedLength > MAX_BODY_LOG_LENGTH) {
56
+ return '';
57
+ }
58
+ if (maxDepth <= 0) {
59
+ return '[MAX_DEPTH_EXCEEDED]';
60
+ }
61
+ if (data === null || data === undefined) {
62
+ return data;
63
+ }
64
+ if (typeof data === 'string') {
65
+ if (data.length > MAX_PARAM_LOG_LENGTH) {
66
+ const lead = data.substring(0, MAX_PARAM_LOG_LENGTH - 10);
67
+ const tail = data.substring(data.length - 10);
68
+ return `${lead}...[${data.length - MAX_PARAM_LOG_LENGTH} truncated]...${tail}`;
69
+ }
70
+ else {
71
+ return data;
72
+ }
73
+ }
74
+ if (typeof data === 'number' || typeof data === 'boolean') {
75
+ return data;
76
+ }
77
+ if (Array.isArray(data)) {
78
+ const truncated = data.slice(0, MAX_ARRAY_ITEMS);
79
+ const result = truncated.map((item) => this.redactSensitiveDataAndTruncate(item, maxDepth, accumulatedLength));
80
+ if (data.length > MAX_ARRAY_ITEMS) {
81
+ result.push(`... (${data.length - MAX_ARRAY_ITEMS} more items truncated)`);
82
+ }
83
+ return result;
84
+ }
85
+ if (typeof data === 'object') {
86
+ const result = {};
87
+ for (const [key, value] of Object.entries(data)) {
88
+ if (accumulatedLength > MAX_BODY_LOG_LENGTH) {
89
+ break;
90
+ }
91
+ // Check if this field contains sensitive data
92
+ const isSensitive = this.isSensitiveField(key);
93
+ if (isSensitive) {
94
+ result[key] = '[REDACTED]';
95
+ }
96
+ else {
97
+ result[key] = this.redactSensitiveDataAndTruncate(value, maxDepth - 1, accumulatedLength);
98
+ }
99
+ if (result[key]) {
100
+ accumulatedLength += JSON.stringify(result[key]).length;
101
+ }
102
+ }
103
+ return result;
104
+ }
105
+ return data;
106
+ }
107
+ /**
108
+ * Checks if a field name is considered sensitive
109
+ */
110
+ static isSensitiveField(fieldName) {
111
+ const lowerKey = fieldName.toLowerCase();
112
+ return this.SENSITIVE_FIELDS.some((sensitiveField) => lowerKey.includes(sensitiveField));
113
+ }
114
+ /**
115
+ * Creates a summary of request parameters
116
+ */
117
+ static createParameterSummary(params) {
118
+ if (!params) {
119
+ return null;
120
+ }
121
+ return this.redactSensitiveDataAndTruncate(params);
122
+ }
123
+ /**
124
+ * Calculates content length of response data
125
+ */
126
+ static calculateContentLength(response) {
127
+ if (!response) {
128
+ return 0;
129
+ }
130
+ try {
131
+ return response.bodyAsU8Array?.length || 'unknown';
132
+ }
133
+ catch {
134
+ return 'unknown';
135
+ }
136
+ }
137
+ /**
138
+ * Extracts the response body as a string or parsed JSON object
139
+ */
140
+ static getResponseBody(response) {
141
+ if (!response) {
142
+ return null;
143
+ }
144
+ try {
145
+ const contentType = response.headers?.get('content-type') || '';
146
+ const isJson = contentType.includes('application/json') || contentType.includes('application/problem+json');
147
+ const isText = contentType.startsWith('text/');
148
+ if (!isJson && !isText) {
149
+ return null;
150
+ }
151
+ // Try to access bodyAsU8Array - this may throw
152
+ const bodyData = response.bodyAsU8Array;
153
+ if (!bodyData) {
154
+ return null;
155
+ }
156
+ // Convert Uint8Array to string
157
+ const bodyString = Buffer.from(bodyData).toString();
158
+ if (!bodyString) {
159
+ return null;
160
+ }
161
+ // Try to parse as JSON if content-type indicates JSON
162
+ if (isJson) {
163
+ try {
164
+ return JSON.parse(bodyString);
165
+ }
166
+ catch {
167
+ // If JSON parsing fails, return as string
168
+ return bodyString;
169
+ }
170
+ }
171
+ // Return as plain text for non-JSON content types
172
+ return bodyString;
173
+ }
174
+ catch {
175
+ return null;
176
+ }
177
+ }
178
+ /**
179
+ * Creates a summary of response body with security redaction and truncation
180
+ * For failed responses (4xx, 5xx): returns full body with redacted sensitive data
181
+ * For successful responses (2xx): returns first 100 chars with redacted sensitive data
182
+ */
183
+ static createResponseBodySummary(response, success) {
184
+ const body = this.getResponseBody(response);
185
+ if (body === null || body === undefined) {
186
+ return null;
187
+ }
188
+ // For objects (parsed JSON), apply redaction
189
+ if (typeof body === 'object') {
190
+ // For failed responses, don't truncate strings within the object
191
+ const redactedBody = this.redactSensitiveDataAndTruncate(body, 5);
192
+ // For successful responses, truncate to first MAX_BODY_LOG_LENGTH chars
193
+ if (success) {
194
+ const bodyString = JSON.stringify(redactedBody);
195
+ if (bodyString.length > MAX_BODY_LOG_LENGTH) {
196
+ const truncated = bodyString.substring(0, MAX_BODY_LOG_LENGTH);
197
+ return `${truncated}... (truncated)`;
198
+ }
199
+ return redactedBody;
200
+ }
201
+ // For failed responses, return full redacted body
202
+ return redactedBody;
203
+ }
204
+ // For strings (plain text or unparseable JSON)
205
+ if (typeof body === 'string') {
206
+ // For successful responses, truncate to first 100 chars
207
+ if (success) {
208
+ if (body.length > MAX_BODY_LOG_LENGTH) {
209
+ return `${body.substring(0, MAX_BODY_LOG_LENGTH)}... (truncated)`;
210
+ }
211
+ return body;
212
+ }
213
+ // For failed responses, return full body
214
+ return body;
215
+ }
216
+ return body;
217
+ }
218
+ /**
219
+ * Logs an incoming request
220
+ */
221
+ static logRequest(req) {
222
+ const params = req.bodyJSON && req.bodyJSON.parameters ? req.bodyJSON.parameters : req.bodyJSON;
223
+ const requestLog = {
224
+ event: 'opal_tool_request',
225
+ path: req.path,
226
+ method: req.method,
227
+ parameters: this.createParameterSummary(params)
228
+ };
229
+ // Log with Zaius audience so developers only see requests for accounts they have access to
230
+ app_sdk_1.logger.info(app_sdk_1.LogVisibility.Zaius, JSON.stringify(requestLog));
231
+ }
232
+ /**
233
+ * Logs a successful response
234
+ */
235
+ static logResponse(req, response, processingTimeMs) {
236
+ const success = response.status >= 200 && response.status < 300;
237
+ const responseLog = {
238
+ event: 'opal_tool_response',
239
+ path: req.path,
240
+ duration: processingTimeMs ? `${processingTimeMs}ms` : undefined,
241
+ status: response.status,
242
+ contentType: response.headers?.get('content-type') || 'unknown',
243
+ contentLength: this.calculateContentLength(response),
244
+ success
245
+ };
246
+ const responseBodySummary = this.createResponseBodySummary(response, success);
247
+ if (responseBodySummary) {
248
+ responseLog.responseBody = responseBodySummary;
249
+ }
250
+ // Log with Zaius audience so developers only see requests for accounts they have access to
251
+ app_sdk_1.logger.info(app_sdk_1.LogVisibility.Zaius, JSON.stringify(responseLog));
252
+ }
253
+ }
254
+ exports.ToolLogger = ToolLogger;
255
+ //# sourceMappingURL=ToolLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolLogger.js","sourceRoot":"","sources":["../../src/logging/ToolLogger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ToolLogger.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolLogger.test.d.ts","sourceRoot":"","sources":["../../src/logging/ToolLogger.test.ts"],"names":[],"mappings":""}