@rudderstack/integrations-lib 0.2.16 → 0.2.18
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/build/sdks/index.d.ts +2 -1
- package/build/sdks/index.d.ts.map +1 -1
- package/build/sdks/index.js +27 -2
- package/build/sdks/zoho/index.d.ts +4 -0
- package/build/sdks/zoho/index.d.ts.map +1 -0
- package/build/sdks/zoho/index.js +9 -0
- package/build/sdks/zoho/types.d.ts +131 -0
- package/build/sdks/zoho/types.d.ts.map +1 -0
- package/build/sdks/zoho/types.js +13 -0
- package/build/sdks/zoho/zoho.d.ts +23 -0
- package/build/sdks/zoho/zoho.d.ts.map +1 -0
- package/build/sdks/zoho/zoho.js +74 -0
- package/build/sdks/zoho/zoho.test.d.ts +2 -0
- package/build/sdks/zoho/zoho.test.d.ts.map +1 -0
- package/build/sdks/zoho/zoho.test.js +315 -0
- package/build/utils/index.d.ts +2 -0
- package/build/utils/index.d.ts.map +1 -1
- package/build/utils/index.js +3 -1
- package/build/utils/json-schema-generator.d.ts +109 -0
- package/build/utils/json-schema-generator.d.ts.map +1 -0
- package/build/utils/json-schema-generator.js +218 -0
- package/build/utils/json-schema-generator.test.d.ts +2 -0
- package/build/utils/json-schema-generator.test.d.ts.map +1 -0
- package/build/utils/json-schema-generator.test.js +368 -0
- package/build/utils/misc.d.ts +1 -1
- package/build/utils/tests.d.ts +6 -0
- package/build/utils/tests.d.ts.map +1 -0
- package/build/utils/tests.js +15 -0
- package/build/utils/tests.test.d.ts +2 -0
- package/build/utils/tests.test.d.ts.map +1 -0
- package/build/utils/tests.test.js +89 -0
- package/package.json +3 -2
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const json_schema_generator_1 = require("./json-schema-generator");
|
|
4
|
+
const tests_1 = require("./tests");
|
|
5
|
+
describe('JsonSchemaGenerator', () => {
|
|
6
|
+
describe('generate()', () => {
|
|
7
|
+
const testCases = [
|
|
8
|
+
{
|
|
9
|
+
name: 'primitive - string',
|
|
10
|
+
input: 'test',
|
|
11
|
+
expected: { type: 'string' },
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'primitive - number',
|
|
15
|
+
input: 123,
|
|
16
|
+
expected: { type: 'number' },
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'primitive - boolean',
|
|
20
|
+
input: true,
|
|
21
|
+
expected: { type: 'boolean' },
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'primitive - null',
|
|
25
|
+
input: null,
|
|
26
|
+
expected: { type: 'null' },
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'empty array',
|
|
30
|
+
input: [],
|
|
31
|
+
expected: { type: 'array', items: { type: 'any' } },
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'simple array of numbers',
|
|
35
|
+
input: [1, 2, 3],
|
|
36
|
+
expected: { type: 'array', items: { type: 'number' } },
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'enum detection from array',
|
|
40
|
+
input: ['red', 'green', 'red', 'blue'],
|
|
41
|
+
options: { detectEnums: true },
|
|
42
|
+
expected: {
|
|
43
|
+
type: 'array',
|
|
44
|
+
items: {
|
|
45
|
+
type: 'string',
|
|
46
|
+
enum: ['red', 'green', 'blue'],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'enum detection disabled',
|
|
52
|
+
input: ['red', 'green', 'red', 'blue'],
|
|
53
|
+
options: { detectEnums: false },
|
|
54
|
+
expected: { type: 'array', items: { type: 'string' } },
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'simple object',
|
|
58
|
+
input: { name: 'John', age: 30 },
|
|
59
|
+
expected: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
name: { type: 'string' },
|
|
63
|
+
age: { type: 'number' },
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'object with required properties',
|
|
69
|
+
input: { name: 'John', age: 30 },
|
|
70
|
+
options: { requireAll: true },
|
|
71
|
+
expected: {
|
|
72
|
+
type: 'object',
|
|
73
|
+
properties: {
|
|
74
|
+
name: { type: 'string' },
|
|
75
|
+
age: { type: 'number' },
|
|
76
|
+
},
|
|
77
|
+
required: ['name', 'age'],
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'nested object',
|
|
82
|
+
input: {
|
|
83
|
+
name: 'John',
|
|
84
|
+
address: {
|
|
85
|
+
street: '123 Main St',
|
|
86
|
+
city: 'Boston',
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
expected: {
|
|
90
|
+
type: 'object',
|
|
91
|
+
properties: {
|
|
92
|
+
name: { type: 'string' },
|
|
93
|
+
address: {
|
|
94
|
+
type: 'object',
|
|
95
|
+
properties: {
|
|
96
|
+
street: { type: 'string' },
|
|
97
|
+
city: { type: 'string' },
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'mixed array of primitives',
|
|
105
|
+
input: [1, 'test', true],
|
|
106
|
+
expected: {
|
|
107
|
+
type: 'array',
|
|
108
|
+
items: { type: ['number', 'string', 'boolean'] },
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: 'object with array',
|
|
113
|
+
input: {
|
|
114
|
+
name: 'John',
|
|
115
|
+
hobbies: ['reading', 'gaming'],
|
|
116
|
+
},
|
|
117
|
+
expected: {
|
|
118
|
+
type: 'object',
|
|
119
|
+
properties: {
|
|
120
|
+
name: { type: 'string' },
|
|
121
|
+
hobbies: { type: 'array', items: { type: 'string' } },
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'array of objects',
|
|
127
|
+
input: [
|
|
128
|
+
{ id: 1, name: 'John' },
|
|
129
|
+
{ id: 2, name: 'Jane' },
|
|
130
|
+
],
|
|
131
|
+
expected: {
|
|
132
|
+
type: 'array',
|
|
133
|
+
items: {
|
|
134
|
+
type: 'object',
|
|
135
|
+
properties: {
|
|
136
|
+
id: { type: 'number' },
|
|
137
|
+
name: { type: 'string' },
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'mixed array with objects',
|
|
144
|
+
input: [123, 'test', { name: 'John' }, true],
|
|
145
|
+
expected: {
|
|
146
|
+
type: 'array',
|
|
147
|
+
items: {
|
|
148
|
+
anyOf: [
|
|
149
|
+
{ type: 'number' },
|
|
150
|
+
{ type: 'string' },
|
|
151
|
+
{
|
|
152
|
+
type: 'object',
|
|
153
|
+
properties: { name: { type: 'string' } },
|
|
154
|
+
},
|
|
155
|
+
{ type: 'boolean' },
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'array of arrays',
|
|
162
|
+
input: [
|
|
163
|
+
[1, 2],
|
|
164
|
+
[3, 4],
|
|
165
|
+
],
|
|
166
|
+
expected: {
|
|
167
|
+
type: 'array',
|
|
168
|
+
items: { type: 'array', items: { type: 'number' } },
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: 'complex nested object',
|
|
173
|
+
input: {
|
|
174
|
+
id: 1,
|
|
175
|
+
user: {
|
|
176
|
+
name: 'John',
|
|
177
|
+
contacts: {
|
|
178
|
+
email: ['john@example.com', 'john.doe@example.com'],
|
|
179
|
+
phone: null,
|
|
180
|
+
},
|
|
181
|
+
preferences: {
|
|
182
|
+
notifications: true,
|
|
183
|
+
theme: {
|
|
184
|
+
dark: false,
|
|
185
|
+
colors: ['blue', 'green'],
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
options: { requireAll: true },
|
|
191
|
+
expected: {
|
|
192
|
+
type: 'object',
|
|
193
|
+
required: ['id', 'user'],
|
|
194
|
+
properties: {
|
|
195
|
+
id: { type: 'number' },
|
|
196
|
+
user: {
|
|
197
|
+
type: 'object',
|
|
198
|
+
required: ['name', 'contacts', 'preferences'],
|
|
199
|
+
properties: {
|
|
200
|
+
name: { type: 'string' },
|
|
201
|
+
contacts: {
|
|
202
|
+
type: 'object',
|
|
203
|
+
required: ['email', 'phone'],
|
|
204
|
+
properties: {
|
|
205
|
+
email: { type: 'array', items: { type: 'string' } },
|
|
206
|
+
phone: { type: 'null' },
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
preferences: {
|
|
210
|
+
type: 'object',
|
|
211
|
+
required: ['notifications', 'theme'],
|
|
212
|
+
properties: {
|
|
213
|
+
notifications: { type: 'boolean' },
|
|
214
|
+
theme: {
|
|
215
|
+
type: 'object',
|
|
216
|
+
required: ['dark', 'colors'],
|
|
217
|
+
properties: {
|
|
218
|
+
dark: { type: 'boolean' },
|
|
219
|
+
colors: { type: 'array', items: { type: 'string' } },
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: 'string array with no enum detection',
|
|
231
|
+
input: ['red', 'red', 'blue'],
|
|
232
|
+
options: { detectEnums: false },
|
|
233
|
+
expected: { type: 'array', items: { type: 'string' } },
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
name: 'array with mixed object types that can be merged',
|
|
237
|
+
input: [
|
|
238
|
+
{ id: 1, name: 'John' },
|
|
239
|
+
{ id: 2, name: 'Jane', age: 30 },
|
|
240
|
+
],
|
|
241
|
+
expected: {
|
|
242
|
+
type: 'array',
|
|
243
|
+
items: {
|
|
244
|
+
type: 'object',
|
|
245
|
+
properties: {
|
|
246
|
+
id: { type: 'number' },
|
|
247
|
+
name: { type: 'string' },
|
|
248
|
+
age: { type: 'number' },
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
name: 'array with mixed object types that cannot be merged',
|
|
255
|
+
input: [
|
|
256
|
+
{ id: 1, name: 'John' },
|
|
257
|
+
{ id: 'ABC', name: 'Jane' }, // id is string instead of number
|
|
258
|
+
],
|
|
259
|
+
expected: {
|
|
260
|
+
type: 'array',
|
|
261
|
+
items: {
|
|
262
|
+
anyOf: [
|
|
263
|
+
{
|
|
264
|
+
type: 'object',
|
|
265
|
+
properties: {
|
|
266
|
+
id: { type: 'number' },
|
|
267
|
+
name: { type: 'string' },
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
type: 'object',
|
|
272
|
+
properties: {
|
|
273
|
+
id: { type: 'string' },
|
|
274
|
+
name: { type: 'string' },
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
],
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
name: 'empty array',
|
|
283
|
+
input: [],
|
|
284
|
+
expected: {
|
|
285
|
+
type: 'array',
|
|
286
|
+
items: { type: 'any' },
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: 'array with single item',
|
|
291
|
+
input: ['test'],
|
|
292
|
+
expected: {
|
|
293
|
+
type: 'array',
|
|
294
|
+
items: { type: 'string' },
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
name: 'array with single object',
|
|
299
|
+
input: [{ id: 1, name: 'John' }],
|
|
300
|
+
expected: {
|
|
301
|
+
type: 'array',
|
|
302
|
+
items: {
|
|
303
|
+
type: 'object',
|
|
304
|
+
properties: {
|
|
305
|
+
id: { type: 'number' },
|
|
306
|
+
name: { type: 'string' },
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
name: 'array with single nested array',
|
|
313
|
+
input: [[1, 2, 3]],
|
|
314
|
+
expected: {
|
|
315
|
+
type: 'array',
|
|
316
|
+
items: {
|
|
317
|
+
type: 'array',
|
|
318
|
+
items: { type: 'number' },
|
|
319
|
+
},
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
name: 'array with objects having common required properties',
|
|
324
|
+
input: [
|
|
325
|
+
{ id: 1, name: 'John', age: 30 },
|
|
326
|
+
{ id: 2, name: 'Jane', email: 'jane@example.com' },
|
|
327
|
+
],
|
|
328
|
+
options: { requireAll: true },
|
|
329
|
+
expected: {
|
|
330
|
+
type: 'array',
|
|
331
|
+
items: {
|
|
332
|
+
type: 'object',
|
|
333
|
+
properties: {
|
|
334
|
+
id: { type: 'number' },
|
|
335
|
+
name: { type: 'string' },
|
|
336
|
+
age: { type: 'number' },
|
|
337
|
+
email: { type: 'string' },
|
|
338
|
+
},
|
|
339
|
+
required: ['id', 'name'],
|
|
340
|
+
},
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
];
|
|
344
|
+
// Run all test cases
|
|
345
|
+
(0, tests_1.filter)(testCases).forEach(({ name, input, options, expected }) => {
|
|
346
|
+
it(name, () => {
|
|
347
|
+
const result = json_schema_generator_1.JsonSchemaGenerator.generate(input, options);
|
|
348
|
+
expect(result).toEqual(expected);
|
|
349
|
+
});
|
|
350
|
+
});
|
|
351
|
+
});
|
|
352
|
+
describe('validate()', () => {
|
|
353
|
+
const errorTestCases = [
|
|
354
|
+
{
|
|
355
|
+
name: 'invalid schema type',
|
|
356
|
+
input: 123,
|
|
357
|
+
schema: { type: 'string' },
|
|
358
|
+
expectedError: 'Validation failed',
|
|
359
|
+
},
|
|
360
|
+
];
|
|
361
|
+
(0, tests_1.filter)(errorTestCases).forEach(({ name, input, schema, expectedError }) => {
|
|
362
|
+
it(name, () => {
|
|
363
|
+
expect(() => json_schema_generator_1.JsonSchemaGenerator.validate(input, schema)).toThrow(expectedError);
|
|
364
|
+
});
|
|
365
|
+
});
|
|
366
|
+
});
|
|
367
|
+
});
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEtZ2VuZXJhdG9yLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvanNvbi1zY2hlbWEtZ2VuZXJhdG9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtRUFJaUM7QUFDakMsbUNBQStDO0FBUy9DLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDbkMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDMUIsTUFBTSxTQUFTLEdBQXFCO1lBQ2xDO2dCQUNFLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLEtBQUssRUFBRSxNQUFNO2dCQUNiLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7YUFDN0I7WUFDRDtnQkFDRSxJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixLQUFLLEVBQUUsR0FBRztnQkFDVixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2FBQzdCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTthQUM5QjtZQUNEO2dCQUNFLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDM0I7WUFDRDtnQkFDRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7YUFDcEQ7WUFDRDtnQkFDRSxJQUFJLEVBQUUseUJBQXlCO2dCQUMvQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEIsUUFBUSxFQUFFLEVBQUUs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Q0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFRMUIsTUFBTSxjQUFjLEdBQXVCO1lBQ3pDO2dCQUNFLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLEtBQUssRUFBRSxHQUFHO2dCQUNWLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQzFCLGFBQWEsRUFBRSxtQkFBbUI7YUFDbkM7U0FDRixDQUFDO1FBRUYsSUFBQSxjQUFNLEVBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFO1lBQ3hFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNaLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQ0FBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25GLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSnNvblNjaGVtYUdlbmVyYXRvcixcbiAgSlNPTlNjaGVtYVR5cGUsXG4gIEpzb25TY2hlbWFHZW5lcmF0b3JPcHRpb25zLFxufSBmcm9tICcuL2pzb24tc2NoZW1hLWdlbmVyYXRvcic7XG5pbXBvcnQgeyBCYXNlVGVzdENhc2UsIGZpbHRlciB9IGZyb20gJy4vdGVzdHMnO1xuXG50eXBlIFNjaGVtYVRlc3RDYXNlID0gQmFzZVRlc3RDYXNlICYge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlucHV0OiB1bmtub3duO1xuICBvcHRpb25zPzogSnNvblNjaGVtYUdlbmVyYXRvck9wdGlvbnM7XG4gIGV4cGVjdGVkOiBKU09OU2NoZW1hVHlwZTtcbn07XG5cbmRlc2NyaWJlKCdKc29uU2NoZW1hR2VuZXJhdG9yJywgKCkgPT4ge1xuICBkZXNjcmliZSgnZ2VuZXJhdGUoKScsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0Q2FzZXM6IFNjaGVtYVRlc3RDYXNlW10gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwcmltaXRpdmUgLSBzdHJpbmcnLFxuICAgICAgICBpbnB1dDogJ3Rlc3QnLFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3ByaW1pdGl2ZSAtIG51bWJlcicsXG4gICAgICAgIGlucHV0OiAxMjMsXG4gICAgICAgIGV4cGVjdGVkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAncHJpbWl0aXZlIC0gYm9vbGVhbicsXG4gICAgICAgIGlucHV0OiB0cnVlLFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwcmltaXRpdmUgLSBudWxsJyxcbiAgICAgICAgaW5wdXQ6IG51bGwsXG4gICAgICAgIGV4cGVjdGVkOiB7IHR5cGU6ICdudWxsJyB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VtcHR5IGFycmF5JyxcbiAgICAgICAgaW5wdXQ6IFtdLFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnYW55JyB9IH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2ltcGxlIGFycmF5IG9mIG51bWJlcnMnLFxuICAgICAgICBpbnB1dDogWzEsIDIsIDNdLFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnbnVtYmVyJyB9IH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZW51bSBkZXRlY3Rpb24gZnJvbSBhcnJheScsXG4gICAgICAgIGlucHV0OiBbJ3JlZCcsICdncmVlbicsICdyZWQnLCAnYmx1ZSddLFxuICAgICAgICBvcHRpb25zOiB7IGRldGVjdEVudW1zOiB0cnVlIH0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbnVtOiBbJ3JlZCcsICdncmVlbicsICdibHVlJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbnVtIGRldGVjdGlvbiBkaXNhYmxlZCcsXG4gICAgICAgIGlucHV0OiBbJ3JlZCcsICdncmVlbicsICdyZWQnLCAnYmx1ZSddLFxuICAgICAgICBvcHRpb25zOiB7IGRldGVjdEVudW1zOiBmYWxzZSB9LFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9IH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2ltcGxlIG9iamVjdCcsXG4gICAgICAgIGlucHV0OiB7IG5hbWU6ICdKb2huJywgYWdlOiAzMCB9LFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIGFnZTogeyB0eXBlOiAnbnVtYmVyJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb2JqZWN0IHdpdGggcmVxdWlyZWQgcHJvcGVydGllcycsXG4gICAgICAgIGlucHV0OiB7IG5hbWU6ICdKb2huJywgYWdlOiAzMCB9LFxuICAgICAgICBvcHRpb25zOiB7IHJlcXVpcmVBbGw6IHRydWUgfSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICBhZ2U6IHsgdHlwZTogJ251bWJlcicgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ25hbWUnLCAnYWdlJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbmVzdGVkIG9iamVjdCcsXG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgIHN0cmVldDogJzEyMyBNYWluIFN0JyxcbiAgICAgICAgICAgIGNpdHk6ICdCb3N0b24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgbmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHN0cmVldDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICAgIGNpdHk6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdtaXhlZCBhcnJheSBvZiBwcmltaXRpdmVzJyxcbiAgICAgICAgaW5wdXQ6IFsxLCAndGVzdCcsIHRydWVdLFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgaXRlbXM6IHsgdHlwZTogWydudW1iZXInLCAnc3RyaW5nJywgJ2Jvb2xlYW4nXSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29iamVjdCB3aXRoIGFycmF5JyxcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBuYW1lOiAnSm9obicsXG4gICAgICAgICAgaG9iYmllczogWydyZWFkaW5nJywgJ2dhbWluZyddLFxuICAgICAgICB9LFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIGhvYmJpZXM6IHsgdHlwZTogJ2FycmF5JywgaXRlbXM6IHsgdHlwZTogJ3N0cmluZycgfSB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgb2Ygb2JqZWN0cycsXG4gICAgICAgIGlucHV0OiBbXG4gICAgICAgICAgeyBpZDogMSwgbmFtZTogJ0pvaG4nIH0sXG4gICAgICAgICAgeyBpZDogMiwgbmFtZTogJ0phbmUnIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdtaXhlZCBhcnJheSB3aXRoIG9iamVjdHMnLFxuICAgICAgICBpbnB1dDogWzEyMywgJ3Rlc3QnLCB7IG5hbWU6ICdKb2huJyB9LCB0cnVlXSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICBhbnlPZjogW1xuICAgICAgICAgICAgICB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgbmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHsgdHlwZTogJ2Jvb2xlYW4nIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgb2YgYXJyYXlzJyxcbiAgICAgICAgaW5wdXQ6IFtcbiAgICAgICAgICBbMSwgMl0sXG4gICAgICAgICAgWzMsIDRdLFxuICAgICAgICBdLFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgaXRlbXM6IHsgdHlwZTogJ2FycmF5JywgaXRlbXM6IHsgdHlwZTogJ251bWJlcicgfSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NvbXBsZXggbmVzdGVkIG9iamVjdCcsXG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICAgICAgY29udGFjdHM6IHtcbiAgICAgICAgICAgICAgZW1haWw6IFsnam9obkBleGFtcGxlLmNvbScsICdqb2huLmRvZUBleGFtcGxlLmNvbSddLFxuICAgICAgICAgICAgICBwaG9uZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmZXJlbmNlczoge1xuICAgICAgICAgICAgICBub3RpZmljYXRpb25zOiB0cnVlLFxuICAgICAgICAgICAgICB0aGVtZToge1xuICAgICAgICAgICAgICAgIGRhcms6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbG9yczogWydibHVlJywgJ2dyZWVuJ10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHsgcmVxdWlyZUFsbDogdHJ1ZSB9LFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ2lkJywgJ3VzZXInXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBpZDogeyB0eXBlOiAnbnVtYmVyJyB9LFxuICAgICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnbmFtZScsICdjb250YWN0cycsICdwcmVmZXJlbmNlcyddLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICAgIGNvbnRhY3RzOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ2VtYWlsJywgJ3Bob25lJ10sXG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6ICdhcnJheScsIGl0ZW1zOiB7IHR5cGU6ICdzdHJpbmcnIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogJ251bGwnIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJlZmVyZW5jZXM6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnbm90aWZpY2F0aW9ucycsICd0aGVtZSddLFxuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25zOiB7IHR5cGU6ICdib29sZWFuJyB9LFxuICAgICAgICAgICAgICAgICAgICB0aGVtZToge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ2RhcmsnLCAnY29sb3JzJ10sXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGFyazogeyB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzdHJpbmcgYXJyYXkgd2l0aCBubyBlbnVtIGRldGVjdGlvbicsXG4gICAgICAgIGlucHV0OiBbJ3JlZCcsICdyZWQnLCAnYmx1ZSddLFxuICAgICAgICBvcHRpb25zOiB7IGRldGVjdEVudW1zOiBmYWxzZSB9LFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9IH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgd2l0aCBtaXhlZCBvYmplY3QgdHlwZXMgdGhhdCBjYW4gYmUgbWVyZ2VkJyxcbiAgICAgICAgaW5wdXQ6IFtcbiAgICAgICAgICB7IGlkOiAxLCBuYW1lOiAnSm9obicgfSxcbiAgICAgICAgICB7IGlkOiAyLCBuYW1lOiAnSmFuZScsIGFnZTogMzAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogJ251bWJlcicgfSxcbiAgICAgICAgICAgICAgbmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICBhZ2U6IHsgdHlwZTogJ251bWJlcicgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhcnJheSB3aXRoIG1peGVkIG9iamVjdCB0eXBlcyB0aGF0IGNhbm5vdCBiZSBtZXJnZWQnLFxuICAgICAgICBpbnB1dDogW1xuICAgICAgICAgIHsgaWQ6IDEsIG5hbWU6ICdKb2huJyB9LFxuICAgICAgICAgIHsgaWQ6ICdBQkMnLCBuYW1lOiAnSmFuZScgfSwgLy8gaWQgaXMgc3RyaW5nIGluc3RlYWQgb2YgbnVtYmVyXG4gICAgICAgIF0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgYW55T2Y6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbXB0eSBhcnJheScsXG4gICAgICAgIGlucHV0OiBbXSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdhbnknIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgd2l0aCBzaW5nbGUgaXRlbScsXG4gICAgICAgIGlucHV0OiBbJ3Rlc3QnXSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgd2l0aCBzaW5nbGUgb2JqZWN0JyxcbiAgICAgICAgaW5wdXQ6IFt7IGlkOiAxLCBuYW1lOiAnSm9obicgfV0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhcnJheSB3aXRoIHNpbmdsZSBuZXN0ZWQgYXJyYXknLFxuICAgICAgICBpbnB1dDogW1sxLCAyLCAzXV0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhcnJheSB3aXRoIG9iamVjdHMgaGF2aW5nIGNvbW1vbiByZXF1aXJlZCBwcm9wZXJ0aWVzJyxcbiAgICAgICAgaW5wdXQ6IFtcbiAgICAgICAgICB7IGlkOiAxLCBuYW1lOiAnSm9obicsIGFnZTogMzAgfSxcbiAgICAgICAgICB7IGlkOiAyLCBuYW1lOiAnSmFuZScsIGVtYWlsOiAnamFuZUBleGFtcGxlLmNvbScgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczogeyByZXF1aXJlQWxsOiB0cnVlIH0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgYWdlOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IFsnaWQnLCAnbmFtZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG5cbiAgICAvLyBSdW4gYWxsIHRlc3QgY2FzZXNcbiAgICBmaWx0ZXIodGVzdENhc2VzKS5mb3JFYWNoKCh7IG5hbWUsIGlucHV0LCBvcHRpb25zLCBleHBlY3RlZCB9KSA9PiB7XG4gICAgICBpdChuYW1lLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IEpzb25TY2hlbWFHZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdGUoKScsICgpID0+IHtcbiAgICB0eXBlIFZhbGlkYXRlVGVzdENhc2UgPSBCYXNlVGVzdENhc2UgJiB7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBpbnB1dDogdW5rbm93bjtcbiAgICAgIHNjaGVtYTogSlNPTlNjaGVtYVR5cGU7XG4gICAgICBleHBlY3RlZEVycm9yOiBzdHJpbmc7XG4gICAgfTtcblxuICAgIGNvbnN0IGVycm9yVGVzdENhc2VzOiBWYWxpZGF0ZVRlc3RDYXNlW10gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdpbnZhbGlkIHNjaGVtYSB0eXBlJyxcbiAgICAgICAgaW5wdXQ6IDEyMyxcbiAgICAgICAgc2NoZW1hOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgIGV4cGVjdGVkRXJyb3I6ICdWYWxpZGF0aW9uIGZhaWxlZCcsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBmaWx0ZXIoZXJyb3JUZXN0Q2FzZXMpLmZvckVhY2goKHsgbmFtZSwgaW5wdXQsIHNjaGVtYSwgZXhwZWN0ZWRFcnJvciB9KSA9PiB7XG4gICAgICBpdChuYW1lLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdCgoKSA9PiBKc29uU2NoZW1hR2VuZXJhdG9yLnZhbGlkYXRlKGlucHV0LCBzY2hlbWEpKS50b1Rocm93KGV4cGVjdGVkRXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
package/build/utils/misc.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export declare const isPrimitive: (arg: unknown) => boolean;
|
|
|
33
33
|
* for null argss returns "NULL" insted of "object"
|
|
34
34
|
*
|
|
35
35
|
*/
|
|
36
|
-
export declare const getType: (arg: unknown) => "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" | "
|
|
36
|
+
export declare const getType: (arg: unknown) => "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" | "array" | "NULL";
|
|
37
37
|
export declare const isObject: (value: unknown) => boolean;
|
|
38
38
|
export declare const isEmpty: (input: unknown) => boolean;
|
|
39
39
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/utils/tests.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,MAAM,iDAWlB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.filter = void 0;
|
|
4
|
+
const filter = (testCases) => {
|
|
5
|
+
// Check if any test case has `only` set to true.
|
|
6
|
+
const hasOnly = testCases.some((testCase) => testCase.only);
|
|
7
|
+
if (hasOnly) {
|
|
8
|
+
// Only run test cases that are marked with `only` and are not skipped.
|
|
9
|
+
return testCases.filter((testCase) => testCase.only && !testCase.skip);
|
|
10
|
+
}
|
|
11
|
+
// Otherwise, run all test cases that are not skipped.
|
|
12
|
+
return testCases.filter((testCase) => !testCase.skip);
|
|
13
|
+
};
|
|
14
|
+
exports.filter = filter;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdGVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS08sTUFBTSxNQUFNLEdBQUcsQ0FBeUIsU0FBYyxFQUFPLEVBQUU7SUFDcEUsaURBQWlEO0lBQ2pELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU1RCxJQUFJLE9BQU8sRUFBRTtRQUNYLHVFQUF1RTtRQUN2RSxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDeEU7SUFFRCxzREFBc0Q7SUFDdEQsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFYVyxRQUFBLE1BQU0sVUFXakIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBCYXNlVGVzdENhc2UgPSB7XG4gIHNraXA/OiBib29sZWFuO1xuICBvbmx5PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXIgPSA8VCBleHRlbmRzIEJhc2VUZXN0Q2FzZT4odGVzdENhc2VzOiBUW10pOiBUW10gPT4ge1xuICAvLyBDaGVjayBpZiBhbnkgdGVzdCBjYXNlIGhhcyBgb25seWAgc2V0IHRvIHRydWUuXG4gIGNvbnN0IGhhc09ubHkgPSB0ZXN0Q2FzZXMuc29tZSgodGVzdENhc2UpID0+IHRlc3RDYXNlLm9ubHkpO1xuXG4gIGlmIChoYXNPbmx5KSB7XG4gICAgLy8gT25seSBydW4gdGVzdCBjYXNlcyB0aGF0IGFyZSBtYXJrZWQgd2l0aCBgb25seWAgYW5kIGFyZSBub3Qgc2tpcHBlZC5cbiAgICByZXR1cm4gdGVzdENhc2VzLmZpbHRlcigodGVzdENhc2UpID0+IHRlc3RDYXNlLm9ubHkgJiYgIXRlc3RDYXNlLnNraXApO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBydW4gYWxsIHRlc3QgY2FzZXMgdGhhdCBhcmUgbm90IHNraXBwZWQuXG4gIHJldHVybiB0ZXN0Q2FzZXMuZmlsdGVyKCh0ZXN0Q2FzZSkgPT4gIXRlc3RDYXNlLnNraXApO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tests.test.d.ts","sourceRoot":"","sources":["../../src/utils/tests.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tests_1 = require("./tests");
|
|
4
|
+
describe('filter', () => {
|
|
5
|
+
const testCases = [
|
|
6
|
+
{
|
|
7
|
+
name: 'should return all test cases when no skip or only flags are present',
|
|
8
|
+
input: [{ name: 'test1' }, { name: 'test2' }, { name: 'test3' }],
|
|
9
|
+
expected: [{ name: 'test1' }, { name: 'test2' }, { name: 'test3' }],
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
name: 'should filter out skipped test cases',
|
|
13
|
+
input: [{ name: 'test1', skip: true }, { name: 'test2' }, { name: 'test3', skip: true }],
|
|
14
|
+
expected: [{ name: 'test2' }],
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'should return only the test cases marked with only',
|
|
18
|
+
input: [{ name: 'test1' }, { name: 'test2', only: true }, { name: 'test3' }],
|
|
19
|
+
expected: [{ name: 'test2', only: true }],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'should return only non-skipped test cases marked with only',
|
|
23
|
+
input: [
|
|
24
|
+
{ name: 'test1', only: true },
|
|
25
|
+
{ name: 'test2', only: true, skip: true },
|
|
26
|
+
{ name: 'test3', only: true },
|
|
27
|
+
],
|
|
28
|
+
expected: [
|
|
29
|
+
{ name: 'test1', only: true },
|
|
30
|
+
{ name: 'test3', only: true },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'should handle empty array input',
|
|
35
|
+
input: [],
|
|
36
|
+
expected: [],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'should return all test cases marked with only',
|
|
40
|
+
input: [{ name: 'test1', only: true }, { name: 'test2' }, { name: 'test3', only: true }],
|
|
41
|
+
expected: [
|
|
42
|
+
{ name: 'test1', only: true },
|
|
43
|
+
{ name: 'test3', only: true },
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'should return empty array when all tests are skipped',
|
|
48
|
+
input: [
|
|
49
|
+
{ name: 'test1', skip: true },
|
|
50
|
+
{ name: 'test2', skip: true },
|
|
51
|
+
{ name: 'test3', skip: true },
|
|
52
|
+
],
|
|
53
|
+
expected: [],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'should return non-skipped tests when no only flag is present',
|
|
57
|
+
input: [{ name: 'test1', skip: true }, { name: 'test2' }, { name: 'test3', skip: false }],
|
|
58
|
+
expected: [{ name: 'test2' }, { name: 'test3', skip: false }],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'should handle undefined skip and only properties',
|
|
62
|
+
input: [
|
|
63
|
+
{ name: 'test1', skip: undefined },
|
|
64
|
+
{ name: 'test2', only: undefined },
|
|
65
|
+
{ name: 'test3' },
|
|
66
|
+
],
|
|
67
|
+
expected: [
|
|
68
|
+
{ name: 'test1', skip: undefined },
|
|
69
|
+
{ name: 'test2', only: undefined },
|
|
70
|
+
{ name: 'test3' },
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'should maintain original object properties',
|
|
75
|
+
input: [
|
|
76
|
+
{ name: 'test1', extraProp: 1 },
|
|
77
|
+
{ name: 'test2', extraProp: 2, skip: true },
|
|
78
|
+
{ name: 'test3', extraProp: 3, only: true },
|
|
79
|
+
],
|
|
80
|
+
expected: [{ name: 'test3', extraProp: 3, only: true }],
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
testCases.forEach(({ name, input, expected }) => {
|
|
84
|
+
it(name, () => {
|
|
85
|
+
expect((0, tests_1.filter)(input)).toEqual(expected);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy90ZXN0cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQStDO0FBWS9DLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0lBQ3RCLE1BQU0sU0FBUyxHQUFlO1FBQzVCO1lBQ0UsSUFBSSxFQUFFLHFFQUFxRTtZQUMzRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNoRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztTQUNwRTtRQUNEO1lBQ0UsSUFBSSxFQUFFLHNDQUFzQztZQUM1QyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDeEYsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDOUI7UUFDRDtZQUNFLElBQUksRUFBRSxvREFBb0Q7WUFDMUQsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUM1RSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUks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TyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTthQUM1QztZQUNELFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN4RDtLQUNGLENBQUM7SUFFRixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7UUFDOUMsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUU7WUFDWixNQUFNLENBQUMsSUFBQSxjQUFNLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVRlc3RDYXNlLCBmaWx0ZXIgfSBmcm9tICcuL3Rlc3RzJztcblxudHlwZSBDdXN0b21UZXN0Q2FzZSA9IEJhc2VUZXN0Q2FzZSAmIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufTtcblxuaW50ZXJmYWNlIFRlc3RJdGVtIHtcbiAgbmFtZTogc3RyaW5nO1xuICBleHBlY3RlZDogQ3VzdG9tVGVzdENhc2VbXTtcbiAgaW5wdXQ6IEN1c3RvbVRlc3RDYXNlW107XG59XG5cbmRlc2NyaWJlKCdmaWx0ZXInLCAoKSA9PiB7XG4gIGNvbnN0IHRlc3RDYXNlczogVGVzdEl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnc2hvdWxkIHJldHVybiBhbGwgdGVzdCBjYXNlcyB3aGVuIG5vIHNraXAgb3Igb25seSBmbGFncyBhcmUgcHJlc2VudCcsXG4gICAgICBpbnB1dDogW3sgbmFtZTogJ3Rlc3QxJyB9LCB7IG5hbWU6ICd0ZXN0MicgfSwgeyBuYW1lOiAndGVzdDMnIH1dLFxuICAgICAgZXhwZWN0ZWQ6IFt7IG5hbWU6ICd0ZXN0MScgfSwgeyBuYW1lOiAndGVzdDInIH0sIHsgbmFtZTogJ3Rlc3QzJyB9XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG91bGQgZmlsdGVyIG91dCBza2lwcGVkIHRlc3QgY2FzZXMnLFxuICAgICAgaW5wdXQ6IFt7IG5hbWU6ICd0ZXN0MScsIHNraXA6IHRydWUgfSwgeyBuYW1lOiAndGVzdDInIH0sIHsgbmFtZTogJ3Rlc3QzJywgc2tpcDogdHJ1ZSB9XSxcbiAgICAgIGV4cGVjdGVkOiBbeyBuYW1lOiAndGVzdDInIH1dLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3VsZCByZXR1cm4gb25seSB0aGUgdGVzdCBjYXNlcyBtYXJrZWQgd2l0aCBvbmx5JyxcbiAgICAgIGlucHV0OiBbeyBuYW1lOiAndGVzdDEnIH0sIHsgbmFtZTogJ3Rlc3QyJywgb25seTogdHJ1ZSB9LCB7IG5hbWU6ICd0ZXN0MycgfV0sXG4gICAgICBleHBlY3RlZDogW3sgbmFtZTogJ3Rlc3QyJywgb25seTogdHJ1ZSB9XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG91bGQgcmV0dXJuIG9ubHkgbm9uLXNraXBwZWQgdGVzdCBjYXNlcyBtYXJrZWQgd2l0aCBvbmx5JyxcbiAgICAgIGlucHV0OiBbXG4gICAgICAgIHsgbmFtZTogJ3Rlc3QxJywgb25seTogdHJ1ZSB9LFxuICAgICAgICB7IG5hbWU6ICd0ZXN0MicsIG9ubHk6IHRydWUsIHNraXA6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiAndGVzdDMnLCBvbmx5OiB0cnVlIH0sXG4gICAgICBdLFxuICAgICAgZXhwZWN0ZWQ6IFtcbiAgICAgICAgeyBuYW1lOiAndGVzdDEnLCBvbmx5OiB0cnVlIH0sXG4gICAgICAgIHsgbmFtZTogJ3Rlc3QzJywgb25seTogdHJ1ZSB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG91bGQgaGFuZGxlIGVtcHR5IGFycmF5IGlucHV0JyxcbiAgICAgIGlucHV0OiBbXSxcbiAgICAgIGV4cGVjdGVkOiBbXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG91bGQgcmV0dXJuIGFsbCB0ZXN0IGNhc2VzIG1hcmtlZCB3aXRoIG9ubHknLFxuICAgICAgaW5wdXQ6IFt7IG5hbWU6ICd0ZXN0MScsIG9ubHk6IHRydWUgfSwgeyBuYW1lOiAndGVzdDInIH0sIHsgbmFtZTogJ3Rlc3QzJywgb25seTogdHJ1ZSB9XSxcbiAgICAgIGV4cGVjdGVkOiBbXG4gICAgICAgIHsgbmFtZTogJ3Rlc3QxJywgb25seTogdHJ1ZSB9LFxuICAgICAgICB7IG5hbWU6ICd0ZXN0MycsIG9ubHk6IHRydWUgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc2hvdWxkIHJldHVybiBlbXB0eSBhcnJheSB3aGVuIGFsbCB0ZXN0cyBhcmUgc2tpcHBlZCcsXG4gICAgICBpbnB1dDogW1xuICAgICAgICB7IG5hbWU6ICd0ZXN0MScsIHNraXA6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiAndGVzdDInLCBza2lwOiB0cnVlIH0sXG4gICAgICAgIHsgbmFtZTogJ3Rlc3QzJywgc2tpcDogdHJ1ZSB9LFxuICAgICAgXSxcbiAgICAgIGV4cGVjdGVkOiBbXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG91bGQgcmV0dXJuIG5vbi1za2lwcGVkIHRlc3RzIHdoZW4gbm8gb25seSBmbGFnIGlzIHByZXNlbnQnLFxuICAgICAgaW5wdXQ6IFt7IG5hbWU6ICd0ZXN0MScsIHNraXA6IHRydWUgfSwgeyBuYW1lOiAndGVzdDInIH0sIHsgbmFtZTogJ3Rlc3QzJywgc2tpcDogZmFsc2UgfV0sXG4gICAgICBleHBlY3RlZDogW3sgbmFtZTogJ3Rlc3QyJyB9LCB7IG5hbWU6ICd0ZXN0MycsIHNraXA6IGZhbHNlIH1dLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3VsZCBoYW5kbGUgdW5kZWZpbmVkIHNraXAgYW5kIG9ubHkgcHJvcGVydGllcycsXG4gICAgICBpbnB1dDogW1xuICAgICAgICB7IG5hbWU6ICd0ZXN0MScsIHNraXA6IHVuZGVmaW5lZCB9LFxuICAgICAgICB7IG5hbWU6ICd0ZXN0MicsIG9ubHk6IHVuZGVmaW5lZCB9LFxuICAgICAgICB7IG5hbWU6ICd0ZXN0MycgfSxcbiAgICAgIF0sXG4gICAgICBleHBlY3RlZDogW1xuICAgICAgICB7IG5hbWU6ICd0ZXN0MScsIHNraXA6IHVuZGVmaW5lZCB9LFxuICAgICAgICB7IG5hbWU6ICd0ZXN0MicsIG9ubHk6IHVuZGVmaW5lZCB9LFxuICAgICAgICB7IG5hbWU6ICd0ZXN0MycgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc2hvdWxkIG1haW50YWluIG9yaWdpbmFsIG9iamVjdCBwcm9wZXJ0aWVzJyxcbiAgICAgIGlucHV0OiBbXG4gICAgICAgIHsgbmFtZTogJ3Rlc3QxJywgZXh0cmFQcm9wOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ3Rlc3QyJywgZXh0cmFQcm9wOiAyLCBza2lwOiB0cnVlIH0sXG4gICAgICAgIHsgbmFtZTogJ3Rlc3QzJywgZXh0cmFQcm9wOiAzLCBvbmx5OiB0cnVlIH0sXG4gICAgICBdLFxuICAgICAgZXhwZWN0ZWQ6IFt7IG5hbWU6ICd0ZXN0MycsIGV4dHJhUHJvcDogMywgb25seTogdHJ1ZSB9XSxcbiAgICB9LFxuICBdO1xuXG4gIHRlc3RDYXNlcy5mb3JFYWNoKCh7IG5hbWUsIGlucHV0LCBleHBlY3RlZCB9KSA9PiB7XG4gICAgaXQobmFtZSwgKCkgPT4ge1xuICAgICAgZXhwZWN0KGZpbHRlcihpbnB1dCkpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rudderstack/integrations-lib",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.18",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"module": "build/index.js",
|
|
@@ -53,7 +53,8 @@
|
|
|
53
53
|
"sha256": "^0.2.0",
|
|
54
54
|
"tslib": "^2.4.0",
|
|
55
55
|
"uuid": "^11.0.5",
|
|
56
|
-
"winston": "^3.11.0"
|
|
56
|
+
"winston": "^3.11.0",
|
|
57
|
+
"jsonschema": "^1.5.0"
|
|
57
58
|
},
|
|
58
59
|
"devDependencies": {
|
|
59
60
|
"@commitlint/config-conventional": "^18.5.0",
|