@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,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParameterValidator = void 0;
4
+ const Models_1 = require("../types/Models");
5
+ const ToolError_1 = require("../types/ToolError");
6
+ /**
7
+ * Parameter validator for tool inputs
8
+ */
9
+ class ParameterValidator {
10
+ /**
11
+ * Validate parameters against their definitions
12
+ * Throws ToolError with status 400 if validation fails
13
+ *
14
+ * @param params The actual parameters received
15
+ * @param parameterDefinitions The expected parameter definitions
16
+ * @param _endpoint The endpoint being validated (reserved for future use)
17
+ * @throws {ToolError} When validation fails
18
+ */
19
+ static validate(params, parameterDefinitions, _endpoint) {
20
+ const errors = [];
21
+ // Validate each defined parameter
22
+ for (const paramDef of parameterDefinitions) {
23
+ const value = params ? params[paramDef.name] : undefined;
24
+ // Check if required parameter is missing
25
+ if (paramDef.required && (value === undefined || value === null)) {
26
+ errors.push({
27
+ field: paramDef.name,
28
+ message: `Required parameter '${paramDef.name}' is missing`
29
+ });
30
+ continue;
31
+ }
32
+ // Skip validation if parameter is optional and not provided
33
+ if (!paramDef.required && (value === undefined || value === null)) {
34
+ continue;
35
+ }
36
+ // Validate parameter type
37
+ const typeError = this.validateParameterType(paramDef.name, value, paramDef.type);
38
+ if (typeError) {
39
+ errors.push(typeError);
40
+ }
41
+ }
42
+ // Throw ToolError if validation failed
43
+ if (errors.length > 0) {
44
+ throw new ToolError_1.ToolError('One or more validation errors occurred.', 400, "See 'errors' field for details.", errors);
45
+ }
46
+ }
47
+ /**
48
+ * Validate a single parameter's type
49
+ * @param paramName Parameter name
50
+ * @param value Parameter value
51
+ * @param expectedType Expected parameter type
52
+ * @returns Validation error if invalid, null if valid
53
+ */
54
+ static validateParameterType(paramName, value, expectedType) {
55
+ const actualType = this.getActualType(value);
56
+ switch (expectedType) {
57
+ case Models_1.ParameterType.String:
58
+ if (typeof value !== 'string') {
59
+ return {
60
+ field: paramName,
61
+ message: `Parameter '${paramName}' must be a string, but received ${actualType}`
62
+ };
63
+ }
64
+ break;
65
+ case Models_1.ParameterType.Integer:
66
+ if (!Number.isInteger(value)) {
67
+ return {
68
+ field: paramName,
69
+ message: `Parameter '${paramName}' must be an integer, but received ${actualType}`
70
+ };
71
+ }
72
+ break;
73
+ case Models_1.ParameterType.Number:
74
+ if (typeof value !== 'number' || isNaN(value)) {
75
+ return {
76
+ field: paramName,
77
+ message: `Parameter '${paramName}' must be a number, but received ${actualType}`
78
+ };
79
+ }
80
+ break;
81
+ case Models_1.ParameterType.Boolean:
82
+ if (typeof value !== 'boolean') {
83
+ return {
84
+ field: paramName,
85
+ message: `Parameter '${paramName}' must be a boolean, but received ${actualType}`
86
+ };
87
+ }
88
+ break;
89
+ case Models_1.ParameterType.List:
90
+ if (!Array.isArray(value)) {
91
+ return {
92
+ field: paramName,
93
+ message: `Parameter '${paramName}' must be an array, but received ${actualType}`
94
+ };
95
+ }
96
+ break;
97
+ case Models_1.ParameterType.Dictionary:
98
+ if (typeof value !== 'object' || Array.isArray(value) || value === null) {
99
+ return {
100
+ field: paramName,
101
+ message: `Parameter '${paramName}' must be an object, but received ${actualType}`
102
+ };
103
+ }
104
+ break;
105
+ default:
106
+ return {
107
+ field: paramName,
108
+ message: `Parameter '${paramName}' has unknown expected type: ${String(expectedType)}`
109
+ };
110
+ }
111
+ return null;
112
+ }
113
+ /**
114
+ * Get a human-readable description of the actual type
115
+ * @param value The value to check
116
+ * @returns String description of the type
117
+ */
118
+ static getActualType(value) {
119
+ if (value === null)
120
+ return 'null';
121
+ if (value === undefined)
122
+ return 'undefined';
123
+ if (Array.isArray(value))
124
+ return 'array';
125
+ return typeof value;
126
+ }
127
+ }
128
+ exports.ParameterValidator = ParameterValidator;
129
+ //# sourceMappingURL=ParameterValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParameterValidator.js","sourceRoot":"","sources":["../../src/validation/ParameterValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ParameterValidator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParameterValidator.test.d.ts","sourceRoot":"","sources":["../../src/validation/ParameterValidator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ParameterValidator_1 = require("./ParameterValidator");
4
+ const Models_1 = require("../types/Models");
5
+ const ToolError_1 = require("../types/ToolError");
6
+ describe('ParameterValidator', () => {
7
+ describe('validate', () => {
8
+ it('should pass validation for valid parameters', () => {
9
+ const paramDefs = [
10
+ new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
11
+ new Models_1.Parameter('age', Models_1.ParameterType.Integer, 'User age', false),
12
+ new Models_1.Parameter('score', Models_1.ParameterType.Number, 'User score', false),
13
+ new Models_1.Parameter('active', Models_1.ParameterType.Boolean, 'Is active', false),
14
+ new Models_1.Parameter('tags', Models_1.ParameterType.List, 'User tags', false),
15
+ new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'User config', false)
16
+ ];
17
+ const validParams = {
18
+ name: 'John Doe',
19
+ age: 25,
20
+ score: 85.5,
21
+ active: true,
22
+ tags: ['admin', 'user'],
23
+ config: { theme: 'dark', language: 'en' }
24
+ };
25
+ expect(() => {
26
+ ParameterValidator_1.ParameterValidator.validate(validParams, paramDefs, '/test-endpoint');
27
+ }).not.toThrow();
28
+ });
29
+ it('should throw ToolError for missing required parameters', () => {
30
+ const paramDefs = [
31
+ new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
32
+ new Models_1.Parameter('email', Models_1.ParameterType.String, 'User email', true)
33
+ ];
34
+ const params = {
35
+ name: 'John Doe'
36
+ // email is missing
37
+ };
38
+ expect(() => {
39
+ ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
40
+ }).toThrow(ToolError_1.ToolError);
41
+ try {
42
+ ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
43
+ }
44
+ catch (error) {
45
+ expect(error).toBeInstanceOf(ToolError_1.ToolError);
46
+ const toolError = error;
47
+ expect(toolError.status).toBe(400);
48
+ expect(toolError.message).toBe("[400] One or more validation errors occurred.: email (Required parameter 'email' is missing)");
49
+ expect(toolError.title).toBe('One or more validation errors occurred.');
50
+ expect(toolError.detail).toBe("See 'errors' field for details.");
51
+ expect(toolError.errors).toHaveLength(1);
52
+ expect(toolError.errors).toEqual([{
53
+ field: 'email',
54
+ message: "Required parameter 'email' is missing"
55
+ }]);
56
+ }
57
+ });
58
+ it('should throw ToolError for wrong parameter types', () => {
59
+ const paramDefs = [
60
+ new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
61
+ new Models_1.Parameter('age', Models_1.ParameterType.Integer, 'User age', true),
62
+ new Models_1.Parameter('active', Models_1.ParameterType.Boolean, 'Is active', true),
63
+ new Models_1.Parameter('tags', Models_1.ParameterType.List, 'User tags', true),
64
+ new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'User config', true)
65
+ ];
66
+ const invalidParams = {
67
+ name: 123, // should be string
68
+ age: '25', // should be integer
69
+ active: 'true', // should be boolean
70
+ tags: 'tag1,tag2', // should be array
71
+ config: 'invalid' // should be object
72
+ };
73
+ try {
74
+ ParameterValidator_1.ParameterValidator.validate(invalidParams, paramDefs, '/test-endpoint');
75
+ fail('Should have thrown ToolError');
76
+ }
77
+ catch (error) {
78
+ expect(error).toBeInstanceOf(ToolError_1.ToolError);
79
+ const toolError = error;
80
+ expect(toolError.status).toBe(400);
81
+ expect(toolError.errors).toHaveLength(5);
82
+ expect(toolError.errors[0].field).toBe('name');
83
+ expect(toolError.errors[0].message).toContain('must be a string');
84
+ expect(toolError.errors[1].field).toBe('age');
85
+ expect(toolError.errors[1].message).toContain('must be an integer');
86
+ expect(toolError.errors[2].field).toBe('active');
87
+ expect(toolError.errors[2].message).toContain('must be a boolean');
88
+ expect(toolError.errors[3].field).toBe('tags');
89
+ expect(toolError.errors[3].message).toContain('must be an array');
90
+ expect(toolError.errors[4].field).toBe('config');
91
+ expect(toolError.errors[4].message).toContain('must be an object');
92
+ }
93
+ });
94
+ it('should throw ToolError when params is null with required parameters', () => {
95
+ const paramDefs = [
96
+ new Models_1.Parameter('required', Models_1.ParameterType.String, 'Required param', true),
97
+ new Models_1.Parameter('optional', Models_1.ParameterType.String, 'Optional param', false)
98
+ ];
99
+ try {
100
+ ParameterValidator_1.ParameterValidator.validate(null, paramDefs, '/test-endpoint');
101
+ fail('Should have thrown ToolError');
102
+ }
103
+ catch (error) {
104
+ expect(error).toBeInstanceOf(ToolError_1.ToolError);
105
+ const toolError = error;
106
+ expect(toolError.errors).toHaveLength(1);
107
+ expect(toolError.errors[0].field).toBe('required');
108
+ }
109
+ });
110
+ it('should throw ToolError when params is undefined with required parameters', () => {
111
+ const paramDefs = [
112
+ new Models_1.Parameter('required', Models_1.ParameterType.String, 'Required param', true),
113
+ new Models_1.Parameter('optional', Models_1.ParameterType.String, 'Optional param', false)
114
+ ];
115
+ try {
116
+ ParameterValidator_1.ParameterValidator.validate(undefined, paramDefs, '/test-endpoint');
117
+ fail('Should have thrown ToolError');
118
+ }
119
+ catch (error) {
120
+ expect(error).toBeInstanceOf(ToolError_1.ToolError);
121
+ const toolError = error;
122
+ expect(toolError.errors).toHaveLength(1);
123
+ expect(toolError.errors[0].field).toBe('required');
124
+ }
125
+ });
126
+ it('should allow optional parameters to be missing', () => {
127
+ const paramDefs = [
128
+ new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
129
+ new Models_1.Parameter('age', Models_1.ParameterType.Integer, 'User age', false)
130
+ ];
131
+ const params = {
132
+ name: 'John Doe'
133
+ // age is optional and missing
134
+ };
135
+ expect(() => {
136
+ ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
137
+ }).not.toThrow();
138
+ });
139
+ it('should distinguish between integer and number types', () => {
140
+ const paramDefs = [
141
+ new Models_1.Parameter('count', Models_1.ParameterType.Integer, 'Item count', true),
142
+ new Models_1.Parameter('score', Models_1.ParameterType.Number, 'Score value', true)
143
+ ];
144
+ const params1 = {
145
+ count: 25.5, // should be integer, not float
146
+ score: 85.5 // number is fine
147
+ };
148
+ try {
149
+ ParameterValidator_1.ParameterValidator.validate(params1, paramDefs, '/test-endpoint');
150
+ fail('Should have thrown ToolError');
151
+ }
152
+ catch (error) {
153
+ expect(error).toBeInstanceOf(ToolError_1.ToolError);
154
+ const toolError = error;
155
+ expect(toolError.errors).toHaveLength(1);
156
+ expect(toolError.errors[0].field).toBe('count');
157
+ expect(toolError.errors[0].message).toContain('must be an integer');
158
+ }
159
+ const params2 = {
160
+ count: 25, // integer is fine
161
+ score: 85.5 // number is fine
162
+ };
163
+ expect(() => {
164
+ ParameterValidator_1.ParameterValidator.validate(params2, paramDefs, '/test-endpoint');
165
+ }).not.toThrow();
166
+ });
167
+ it('should handle array vs object distinction', () => {
168
+ const paramDefs = [
169
+ new Models_1.Parameter('tags', Models_1.ParameterType.List, 'Tags', true),
170
+ new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'Config', true)
171
+ ];
172
+ const params = {
173
+ tags: { key: 'value' }, // should be array, not object
174
+ config: ['item1', 'item2'] // should be object, not array
175
+ };
176
+ try {
177
+ ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
178
+ fail('Should have thrown ToolError');
179
+ }
180
+ catch (error) {
181
+ expect(error).toBeInstanceOf(ToolError_1.ToolError);
182
+ const toolError = error;
183
+ expect(toolError.errors).toHaveLength(2);
184
+ }
185
+ });
186
+ it('should handle null values for optional parameters', () => {
187
+ const paramDefs = [
188
+ new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
189
+ new Models_1.Parameter('nickname', Models_1.ParameterType.String, 'Nickname', false)
190
+ ];
191
+ const params = {
192
+ name: 'John Doe',
193
+ nickname: null // optional param can be null
194
+ };
195
+ expect(() => {
196
+ ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
197
+ }).not.toThrow();
198
+ });
199
+ it('should handle edge cases for number validation', () => {
200
+ const paramDefs = [
201
+ new Models_1.Parameter('value', Models_1.ParameterType.Number, 'Number value', true)
202
+ ];
203
+ // NaN should fail
204
+ try {
205
+ ParameterValidator_1.ParameterValidator.validate({ value: NaN }, paramDefs, '/test-endpoint');
206
+ fail('Should have thrown ToolError for NaN');
207
+ }
208
+ catch (error) {
209
+ expect(error).toBeInstanceOf(ToolError_1.ToolError);
210
+ }
211
+ // Infinity should pass (it's a number)
212
+ expect(() => {
213
+ ParameterValidator_1.ParameterValidator.validate({ value: Infinity }, paramDefs, '/test-endpoint');
214
+ }).not.toThrow();
215
+ // Negative numbers should pass
216
+ expect(() => {
217
+ ParameterValidator_1.ParameterValidator.validate({ value: -42.5 }, paramDefs, '/test-endpoint');
218
+ }).not.toThrow();
219
+ });
220
+ it('should handle edge cases for integer validation', () => {
221
+ const paramDefs = [
222
+ new Models_1.Parameter('count', Models_1.ParameterType.Integer, 'Count', true)
223
+ ];
224
+ // Zero should pass
225
+ expect(() => {
226
+ ParameterValidator_1.ParameterValidator.validate({ count: 0 }, paramDefs, '/test-endpoint');
227
+ }).not.toThrow();
228
+ // Negative integer should pass
229
+ expect(() => {
230
+ ParameterValidator_1.ParameterValidator.validate({ count: -10 }, paramDefs, '/test-endpoint');
231
+ }).not.toThrow();
232
+ });
233
+ it('should handle empty arrays and objects', () => {
234
+ const paramDefs = [
235
+ new Models_1.Parameter('tags', Models_1.ParameterType.List, 'Tags', true),
236
+ new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'Config', true)
237
+ ];
238
+ const params = {
239
+ tags: [],
240
+ config: {}
241
+ };
242
+ expect(() => {
243
+ ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
244
+ }).not.toThrow();
245
+ });
246
+ it('should handle special string values', () => {
247
+ const paramDefs = [
248
+ new Models_1.Parameter('value', Models_1.ParameterType.String, 'String value', true)
249
+ ];
250
+ // Empty string should pass
251
+ expect(() => {
252
+ ParameterValidator_1.ParameterValidator.validate({ value: '' }, paramDefs, '/test-endpoint');
253
+ }).not.toThrow();
254
+ // String with only whitespace should pass
255
+ expect(() => {
256
+ ParameterValidator_1.ParameterValidator.validate({ value: ' ' }, paramDefs, '/test-endpoint');
257
+ }).not.toThrow();
258
+ });
259
+ it('should collect multiple validation errors', () => {
260
+ const paramDefs = [
261
+ new Models_1.Parameter('name', Models_1.ParameterType.String, 'Name', true),
262
+ new Models_1.Parameter('age', Models_1.ParameterType.Integer, 'Age', true),
263
+ new Models_1.Parameter('email', Models_1.ParameterType.String, 'Email', true)
264
+ ];
265
+ const params = {
266
+ // name is missing
267
+ age: 'invalid' // wrong type
268
+ // email is missing
269
+ };
270
+ try {
271
+ ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
272
+ fail('Should have thrown ToolError');
273
+ }
274
+ catch (error) {
275
+ expect(error).toBeInstanceOf(ToolError_1.ToolError);
276
+ const toolError = error;
277
+ expect(toolError.errors).toHaveLength(3);
278
+ expect(toolError.errors.some((e) => e.field === 'name')).toBe(true);
279
+ expect(toolError.errors.some((e) => e.field === 'age')).toBe(true);
280
+ expect(toolError.errors.some((e) => e.field === 'email')).toBe(true);
281
+ }
282
+ });
283
+ it('should handle tools with no parameter definitions', () => {
284
+ expect(() => {
285
+ ParameterValidator_1.ParameterValidator.validate({ anyParam: 'value' }, [], '/test-endpoint');
286
+ }).not.toThrow();
287
+ });
288
+ it('should handle extra parameters not in definition', () => {
289
+ const paramDefs = [
290
+ new Models_1.Parameter('name', Models_1.ParameterType.String, 'Name', true)
291
+ ];
292
+ const params = {
293
+ name: 'John',
294
+ extraParam: 'ignored', // not in definition
295
+ anotherExtra: 123
296
+ };
297
+ // Extra parameters should be ignored
298
+ expect(() => {
299
+ ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
300
+ }).not.toThrow();
301
+ });
302
+ it('should handle nested objects and arrays', () => {
303
+ const paramDefs = [
304
+ new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'Config', true),
305
+ new Models_1.Parameter('items', Models_1.ParameterType.List, 'Items', true)
306
+ ];
307
+ const params = {
308
+ config: {
309
+ nested: {
310
+ deeply: {
311
+ nested: 'value'
312
+ }
313
+ }
314
+ },
315
+ items: [1, 2, [3, 4, [5, 6]]]
316
+ };
317
+ expect(() => {
318
+ ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
319
+ }).not.toThrow();
320
+ });
321
+ });
322
+ });
323
+ //# sourceMappingURL=ParameterValidator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParameterValidator.test.js","sourceRoot":"","sources":["../../src/validation/ParameterValidator.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optimizely-opal/opal-tool-ocp-sdk",
3
- "version": "1.0.0-beta.1",
3
+ "version": "1.0.0-beta.10",
4
4
  "description": "OCP SDK for Opal tool",
5
5
  "scripts": {
6
6
  "validate-deps": "node scripts/validate-deps.js",
@@ -37,6 +37,7 @@
37
37
  "@typescript-eslint/eslint-plugin": "^8.27.0",
38
38
  "@typescript-eslint/eslint-plugin-tslint": "^7.0.2",
39
39
  "@typescript-eslint/parser": "^8.27.0",
40
+ "@zaiusinc/app-sdk": "^2.2.4",
40
41
  "@zaiusinc/eslint-config-presets": "^2.0.0",
41
42
  "copyfiles": "^2.4.1",
42
43
  "cross-env": "^7.0.3",
@@ -51,8 +52,7 @@
51
52
  "rimraf": "^6.0.1",
52
53
  "ts-jest": "^29.3.2",
53
54
  "tslint": "^6.1.3",
54
- "typescript": "^5.8.2",
55
- "@zaiusinc/app-sdk": "^2.2.4"
55
+ "typescript": "^5.8.2"
56
56
  },
57
57
  "dependencies": {
58
58
  "jose": "^6.1.0",