@rudderstack/integrations-lib 0.2.17 → 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.
@@ -1,5 +1,7 @@
1
+ export * from './json-schema-generator';
1
2
  export * from './json';
2
3
  export * from './misc';
3
4
  export * from './request';
4
5
  export * from './sem';
6
+ export * from './tests';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC"}
@@ -14,8 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./json-schema-generator"), exports);
17
18
  __exportStar(require("./json"), exports);
18
19
  __exportStar(require("./misc"), exports);
19
20
  __exportStar(require("./request"), exports);
20
21
  __exportStar(require("./sem"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2Qix5Q0FBdUI7QUFDdkIsNENBQTBCO0FBQzFCLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vanNvbic7XG5leHBvcnQgKiBmcm9tICcuL21pc2MnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXF1ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc2VtJztcbiJdfQ==
22
+ __exportStar(require("./tests"), exports);
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBEQUF3QztBQUN4Qyx5Q0FBdUI7QUFDdkIseUNBQXVCO0FBQ3ZCLDRDQUEwQjtBQUMxQix3Q0FBc0I7QUFDdEIsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9qc29uLXNjaGVtYS1nZW5lcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9qc29uJztcbmV4cG9ydCAqIGZyb20gJy4vbWlzYyc7XG5leHBvcnQgKiBmcm9tICcuL3JlcXVlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zZW0nO1xuZXhwb3J0ICogZnJvbSAnLi90ZXN0cyc7XG4iXX0=
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Type definition for a JSON Schema.
3
+ */
4
+ export type JSONSchemaType = {
5
+ type?: string | string[];
6
+ properties?: {
7
+ [key: string]: JSONSchemaType;
8
+ };
9
+ items?: JSONSchemaType;
10
+ required?: string[];
11
+ enum?: any[];
12
+ anyOf?: JSONSchemaType[];
13
+ };
14
+ /**
15
+ * Options for generating JSON Schemas.
16
+ */
17
+ export type JsonSchemaGeneratorOptions = {
18
+ /** If true, marks every property in an object as required */
19
+ requireAll?: boolean;
20
+ /** If true, attempts to detect and include enums for arrays of strings */
21
+ detectEnums?: boolean;
22
+ };
23
+ /**
24
+ * Utility for generating and validating JSON Schemas from data.
25
+ */
26
+ export declare class JsonSchemaGenerator {
27
+ private static validator;
28
+ /**
29
+ * Validates the provided data against the given JSON Schema.
30
+ *
31
+ * @param data - The data to validate.
32
+ * @param schema - The JSON Schema to use for validation.
33
+ * @throws Error if the validation fails.
34
+ */
35
+ static validate(data: unknown, schema: JSONSchemaType): void;
36
+ /**
37
+ * Generates a JSON Schema for the given data.
38
+ *
39
+ * @param data - The data for which to generate a JSON Schema.
40
+ * @param options - Generation options.
41
+ * @returns The generated JSON Schema.
42
+ */
43
+ static generate(data: unknown, options?: JsonSchemaGeneratorOptions): JSONSchemaType;
44
+ /**
45
+ * Determines the primitive type of a value.
46
+ *
47
+ * @param data - The data whose type is to be inferred.
48
+ * @returns A string representing the type.
49
+ */
50
+ private static inferType;
51
+ /**
52
+ * Recursively builds a JSON Schema from the provided data.
53
+ *
54
+ * @param data - The data to interpret.
55
+ * @param options - Generation options.
56
+ * @returns A JSON Schema object.
57
+ */
58
+ private static buildSchema;
59
+ /**
60
+ * Checks if all types in an array are one of the primitive types:
61
+ * string, number, or boolean.
62
+ *
63
+ * @param types - An array of type strings.
64
+ * @returns True if every type is primitive.
65
+ */
66
+ private static allTypesArePrimitive;
67
+ /**
68
+ * Generates a JSON Schema for an array.
69
+ *
70
+ * @param data - The array data.
71
+ * @param options - Generation options.
72
+ * @returns The JSON Schema corresponding to the array data.
73
+ */
74
+ private static buildArraySchema;
75
+ /**
76
+ * Generates a JSON Schema for an array containing mixed types.
77
+ *
78
+ * @param data - The array data.
79
+ * @param options - Generation options.
80
+ * @returns The JSON Schema with an "anyOf" clause.
81
+ */
82
+ private static buildMixedArraySchema;
83
+ /**
84
+ * Generates a JSON Schema for an object.
85
+ *
86
+ * @param data - The object data.
87
+ * @param options - Generation options.
88
+ * @returns The JSON Schema for the object.
89
+ */
90
+ private static buildObjectSchema;
91
+ /**
92
+ * Attempts to merge two JSON Schemas. Merging is only successful if both schemas have the same type
93
+ * and there are no conflicts within defined properties.
94
+ *
95
+ * @param schemaA - The first JSON Schema.
96
+ * @param schemaB - The second JSON Schema.
97
+ * @returns The merged schema if successful; otherwise, null.
98
+ */
99
+ private static mergeTwoSchemas;
100
+ /**
101
+ * Merges an array of JSON Schemas. Schemas with the same type and non-conflicting
102
+ * definitions are merged together.
103
+ *
104
+ * @param schemas - The list of schemas to merge.
105
+ * @returns A deduplicated list of merged schemas.
106
+ */
107
+ private static mergeSimilarSchemas;
108
+ }
109
+ //# sourceMappingURL=json-schema-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-generator.d.ts","sourceRoot":"","sources":["../../src/utils/json-schema-generator.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAC;IAC/C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAmB;IAE3C;;;;;;OAMG;WACW,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAOnE;;;;;;OAMG;WACW,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,0BAA+B,GAAG,cAAc;IAM/F;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAOxB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAc1B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAInC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA4B/B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAYpC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAoBhC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAoC9B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;CAkCnC"}
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonSchemaGenerator = void 0;
4
+ /* eslint-disable no-plusplus */
5
+ const jsonschema_1 = require("jsonschema");
6
+ /**
7
+ * Utility for generating and validating JSON Schemas from data.
8
+ */
9
+ class JsonSchemaGenerator {
10
+ /**
11
+ * Validates the provided data against the given JSON Schema.
12
+ *
13
+ * @param data - The data to validate.
14
+ * @param schema - The JSON Schema to use for validation.
15
+ * @throws Error if the validation fails.
16
+ */
17
+ static validate(data, schema) {
18
+ const result = this.validator.validate(data, schema);
19
+ if (!result.valid) {
20
+ throw new Error(`Validation failed: ${result.errors.join(', ')}`);
21
+ }
22
+ }
23
+ /**
24
+ * Generates a JSON Schema for the given data.
25
+ *
26
+ * @param data - The data for which to generate a JSON Schema.
27
+ * @param options - Generation options.
28
+ * @returns The generated JSON Schema.
29
+ */
30
+ static generate(data, options = {}) {
31
+ return this.buildSchema(data, options);
32
+ }
33
+ // ─── PRIVATE HELPERS ────────────────────────────────────────────
34
+ /**
35
+ * Determines the primitive type of a value.
36
+ *
37
+ * @param data - The data whose type is to be inferred.
38
+ * @returns A string representing the type.
39
+ */
40
+ static inferType(data) {
41
+ if (data === null)
42
+ return 'null';
43
+ if (Array.isArray(data))
44
+ return 'array';
45
+ if (typeof data === 'object')
46
+ return 'object';
47
+ return typeof data;
48
+ }
49
+ /**
50
+ * Recursively builds a JSON Schema from the provided data.
51
+ *
52
+ * @param data - The data to interpret.
53
+ * @param options - Generation options.
54
+ * @returns A JSON Schema object.
55
+ */
56
+ static buildSchema(data, options) {
57
+ const type = this.inferType(data);
58
+ switch (type) {
59
+ case 'null':
60
+ return { type: 'null' };
61
+ case 'array':
62
+ return this.buildArraySchema(data, options);
63
+ case 'object':
64
+ return this.buildObjectSchema(data, options);
65
+ default:
66
+ return { type };
67
+ }
68
+ }
69
+ /**
70
+ * Checks if all types in an array are one of the primitive types:
71
+ * string, number, or boolean.
72
+ *
73
+ * @param types - An array of type strings.
74
+ * @returns True if every type is primitive.
75
+ */
76
+ static allTypesArePrimitive(types) {
77
+ return types.every((type) => ['string', 'number', 'boolean'].includes(type));
78
+ }
79
+ /**
80
+ * Generates a JSON Schema for an array.
81
+ *
82
+ * @param data - The array data.
83
+ * @param options - Generation options.
84
+ * @returns The JSON Schema corresponding to the array data.
85
+ */
86
+ static buildArraySchema(data, options) {
87
+ if (data.length === 0) {
88
+ return { type: 'array', items: { type: 'any' } };
89
+ }
90
+ const types = data.map(this.inferType);
91
+ if (this.allTypesArePrimitive(types)) {
92
+ const uniqueTypes = Array.from(new Set(types));
93
+ if (uniqueTypes.length === 1) {
94
+ return {
95
+ type: 'array',
96
+ items: {
97
+ type: uniqueTypes[0],
98
+ ...(uniqueTypes[0] === 'string' && options.detectEnums
99
+ ? { enum: Array.from(new Set(data)) }
100
+ : {}),
101
+ },
102
+ };
103
+ }
104
+ return { type: 'array', items: { type: uniqueTypes } };
105
+ }
106
+ return this.buildMixedArraySchema(data, options);
107
+ }
108
+ /**
109
+ * Generates a JSON Schema for an array containing mixed types.
110
+ *
111
+ * @param data - The array data.
112
+ * @param options - Generation options.
113
+ * @returns The JSON Schema with an "anyOf" clause.
114
+ */
115
+ static buildMixedArraySchema(data, options) {
116
+ const schemas = data.map((item) => this.buildSchema(item, options));
117
+ const uniqueSchemas = this.mergeSimilarSchemas(schemas);
118
+ return {
119
+ type: 'array',
120
+ items: uniqueSchemas.length === 1 ? uniqueSchemas[0] : { anyOf: uniqueSchemas },
121
+ };
122
+ }
123
+ /**
124
+ * Generates a JSON Schema for an object.
125
+ *
126
+ * @param data - The object data.
127
+ * @param options - Generation options.
128
+ * @returns The JSON Schema for the object.
129
+ */
130
+ static buildObjectSchema(data, options) {
131
+ const properties = {};
132
+ const required = [];
133
+ const { requireAll = false } = options;
134
+ Object.entries(data).forEach(([key, value]) => {
135
+ properties[key] = this.buildSchema(value, options);
136
+ if (requireAll)
137
+ required.push(key);
138
+ });
139
+ return {
140
+ type: 'object',
141
+ properties,
142
+ ...(required.length > 0 ? { required } : {}),
143
+ };
144
+ }
145
+ /**
146
+ * Attempts to merge two JSON Schemas. Merging is only successful if both schemas have the same type
147
+ * and there are no conflicts within defined properties.
148
+ *
149
+ * @param schemaA - The first JSON Schema.
150
+ * @param schemaB - The second JSON Schema.
151
+ * @returns The merged schema if successful; otherwise, null.
152
+ */
153
+ static mergeTwoSchemas(schemaA, schemaB) {
154
+ if (schemaA.type !== schemaB.type)
155
+ return null;
156
+ const propsA = schemaA.properties || {};
157
+ const propsB = schemaB.properties || {};
158
+ const allKeys = Array.from(new Set([...Object.keys(propsA), ...Object.keys(propsB)]));
159
+ const hasConflict = allKeys.some((key) => key in propsA &&
160
+ key in propsB &&
161
+ JSON.stringify(propsA[key]) !== JSON.stringify(propsB[key]));
162
+ if (hasConflict)
163
+ return null;
164
+ const mergedProperties = allKeys.reduce((acc, key) => {
165
+ acc[key] = propsA[key] || propsB[key];
166
+ return acc;
167
+ }, {});
168
+ // A property is required in the merged schema only if it was required in both.
169
+ const requiredA = new Set(schemaA.required || []);
170
+ const requiredMerged = (schemaB.required || []).filter((field) => requiredA.has(field));
171
+ return {
172
+ ...schemaA,
173
+ ...schemaB,
174
+ type: schemaA.type,
175
+ ...(Object.keys(mergedProperties).length > 0 ? { properties: mergedProperties } : {}),
176
+ ...(requiredMerged.length > 0 ? { required: requiredMerged } : {}),
177
+ };
178
+ }
179
+ /**
180
+ * Merges an array of JSON Schemas. Schemas with the same type and non-conflicting
181
+ * definitions are merged together.
182
+ *
183
+ * @param schemas - The list of schemas to merge.
184
+ * @returns A deduplicated list of merged schemas.
185
+ */
186
+ static mergeSimilarSchemas(schemas) {
187
+ if (schemas.length <= 1)
188
+ return [...schemas];
189
+ let mergedSchemas = [...schemas];
190
+ // Attempt one merge pass
191
+ const attemptMerge = (schemasList) => {
192
+ for (let i = 0; i < schemasList.length; i++) {
193
+ for (let j = i + 1; j < schemasList.length; j++) {
194
+ const merged = this.mergeTwoSchemas(schemasList[i], schemasList[j]);
195
+ if (merged) {
196
+ const newSchemas = [
197
+ ...schemasList.slice(0, i),
198
+ merged,
199
+ ...schemasList.slice(i + 1, j),
200
+ ...schemasList.slice(j + 1),
201
+ ];
202
+ return { schemas: newSchemas, merged: true };
203
+ }
204
+ }
205
+ }
206
+ return { schemas: schemasList, merged: false };
207
+ };
208
+ let result = attemptMerge(mergedSchemas);
209
+ while (result.merged) {
210
+ mergedSchemas = result.schemas;
211
+ result = attemptMerge(mergedSchemas);
212
+ }
213
+ return mergedSchemas;
214
+ }
215
+ }
216
+ exports.JsonSchemaGenerator = JsonSchemaGenerator;
217
+ JsonSchemaGenerator.validator = new jsonschema_1.Validator();
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2pzb24tc2NoZW1hLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnQ0FBZ0M7QUFDaEMsMkNBQXVDO0FBd0J2Qzs7R0FFRztBQUNILE1BQWEsbUJBQW1CO0lBRzlCOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBYSxFQUFFLE1BQXNCO1FBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFhLEVBQUUsVUFBc0MsRUFBRTtRQUM1RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxtRUFBbUU7SUFFbkU7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQWE7UUFDcEMsSUFBSSxJQUFJLEtBQUssSUFBSTtZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLE9BQU8sQ0FBQztRQUN4QyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUM5QyxPQUFPLE9BQU8sSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQWEsRUFB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QUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7cUJBQzlDO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDakQsQ0FBQyxDQUFDO1FBRUYsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNwQixhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMvQixNQUFNLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7QUFoUEgsa0RBaVBDO0FBaFBnQiw2QkFBUyxHQUFHLElBQUksc0JBQVMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGx1c3BsdXMgKi9cbmltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gJ2pzb25zY2hlbWEnO1xuXG4vKipcbiAqIFR5cGUgZGVmaW5pdGlvbiBmb3IgYSBKU09OIFNjaGVtYS5cbiAqL1xuZXhwb3J0IHR5cGUgSlNPTlNjaGVtYVR5cGUgPSB7XG4gIHR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHJvcGVydGllcz86IHsgW2tleTogc3RyaW5nXTogSlNPTlNjaGVtYVR5cGUgfTtcbiAgaXRlbXM/OiBKU09OU2NoZW1hVHlwZTtcbiAgcmVxdWlyZWQ/OiBzdHJpbmdbXTtcbiAgZW51bT86IGFueVtdO1xuICBhbnlPZj86IEpTT05TY2hlbWFUeXBlW107XG59O1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGdlbmVyYXRpbmcgSlNPTiBTY2hlbWFzLlxuICovXG5leHBvcnQgdHlwZSBKc29uU2NoZW1hR2VuZXJhdG9yT3B0aW9ucyA9IHtcbiAgLyoqIElmIHRydWUsIG1hcmtzIGV2ZXJ5IHByb3BlcnR5IGluIGFuIG9iamVjdCBhcyByZXF1aXJlZCAqL1xuICByZXF1aXJlQWxsPzogYm9vbGVhbjtcbiAgLyoqIElmIHRydWUsIGF0dGVtcHRzIHRvIGRldGVjdCBhbmQgaW5jbHVkZSBlbnVtcyBmb3IgYXJyYXlzIG9mIHN0cmluZ3MgKi9cbiAgZGV0ZWN0RW51bXM/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZvciBnZW5lcmF0aW5nIGFuZCB2YWxpZGF0aW5nIEpTT04gU2NoZW1hcyBmcm9tIGRhdGEuXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uU2NoZW1hR2VuZXJhdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdG9yID0gbmV3IFZhbGlkYXRvcigpO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHByb3ZpZGVkIGRhdGEgYWdhaW5zdCB0aGUgZ2l2ZW4gSlNPTiBTY2hlbWEuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdG8gdmFsaWRhdGUuXG4gICAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgSlNPTiBTY2hlbWEgdG8gdXNlIGZvciB2YWxpZGF0aW9uLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSB2YWxpZGF0aW9uIGZhaWxzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZShkYXRhOiB1bmtub3duLCBzY2hlbWE6IEpTT05TY2hlbWFUeXBlKTogdm9pZCB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy52YWxpZGF0b3IudmFsaWRhdGUoZGF0YSwgc2NoZW1hKTtcbiAgICBpZiAoIXJlc3VsdC52YWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYWxpZGF0aW9uIGZhaWxlZDogJHtyZXN1bHQuZXJyb3JzLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIEpTT04gU2NoZW1hIGZvciB0aGUgZ2l2ZW4gZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBmb3Igd2hpY2ggdG8gZ2VuZXJhdGUgYSBKU09OIFNjaGVtYS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBHZW5lcmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIFRoZSBnZW5lcmF0ZWQgSlNPTiBTY2hlbWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlKGRhdGE6IHVua25vd24sIG9wdGlvbnM6IEpzb25TY2hlbWFHZW5lcmF0b3JPcHRpb25zID0ge30pOiBKU09OU2NoZW1hVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRTY2hlbWEoZGF0YSwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyDilIDilIDilIAgUFJJVkFURSBIRUxQRVJTIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBwcmltaXRpdmUgdHlwZSBvZiBhIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIHdob3NlIHR5cGUgaXMgdG8gYmUgaW5mZXJyZWQuXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdHlwZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGluZmVyVHlwZShkYXRhOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuICdudWxsJztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkgcmV0dXJuICdhcnJheSc7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JykgcmV0dXJuICdvYmplY3QnO1xuICAgIHJldHVybiB0eXBlb2YgZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBidWlsZHMgYSBKU09OIFNjaGVtYSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIHRvIGludGVycHJldC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBHZW5lcmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIEEgSlNPTiBTY2hlbWEgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRTY2hlbWEoZGF0YTogdW5rbm93biwgb3B0aW9uczogSnNvblNjaGVtYUdlbmVyYXRvck9wdGlvbnMpOiBKU09OU2NoZW1hVHlwZSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuaW5mZXJUeXBlKGRhdGEpO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgIHJldHVybiB7IHR5cGU6ICdudWxsJyB9O1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEFycmF5U2NoZW1hKGRhdGEgYXMgdW5rbm93bltdLCBvcHRpb25zKTtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkT2JqZWN0U2NoZW1hKGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG9wdGlvbnMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHsgdHlwZSB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYWxsIHR5cGVzIGluIGFuIGFycmF5IGFyZSBvbmUgb2YgdGhlIHByaW1pdGl2ZSB0eXBlczpcbiAgICogc3RyaW5nLCBudW1iZXIsIG9yIGJvb2xlYW4uXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlcyAtIEFuIGFycmF5IG9mIHR5cGUgc3RyaW5ncy5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBldmVyeSB0eXBlIGlzIHByaW1pdGl2ZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGFsbFR5cGVzQXJlUHJpbWl0aXZlKHR5cGVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlcy5ldmVyeSgodHlwZSkgPT4gWydzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nXS5pbmNsdWRlcyh0eXBlKSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgSlNPTiBTY2hlbWEgZm9yIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBhcnJheSBkYXRhLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEdlbmVyYXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMgVGhlIEpTT04gU2NoZW1hIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFycmF5IGRhdGEuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBidWlsZEFycmF5U2NoZW1hKFxuICAgIGRhdGE6IHVua25vd25bXSxcbiAgICBvcHRpb25zOiBKc29uU2NoZW1hR2VuZXJhdG9yT3B0aW9ucyxcbiAgKTogSlNPTlNjaGVtYVR5cGUge1xuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ2FycmF5JywgaXRlbXM6IHsgdHlwZTogJ2FueScgfSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVzID0gZGF0YS5tYXAodGhpcy5pbmZlclR5cGUpO1xuICAgIGlmICh0aGlzLmFsbFR5cGVzQXJlUHJpbWl0aXZlKHR5cGVzKSkge1xuICAgICAgY29uc3QgdW5pcXVlVHlwZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQodHlwZXMpKTtcbiAgICAgIGlmICh1bmlxdWVUeXBlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiB1bmlxdWVUeXBlc1swXSxcbiAgICAgICAgICAgIC4uLih1bmlxdWVUeXBlc1swXSA9PT0gJ3N0cmluZycgJiYgb3B0aW9ucy5kZXRlY3RFbnVtc1xuICAgICAgICAgICAgICA/IHsgZW51bTogQXJyYXkuZnJvbShuZXcgU2V0KGRhdGEpKSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiB1bmlxdWVUeXBlcyB9IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYnVpbGRNaXhlZEFycmF5U2NoZW1hKGRhdGEsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIEpTT04gU2NoZW1hIGZvciBhbiBhcnJheSBjb250YWluaW5nIG1peGVkIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBhcnJheSBkYXRhLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEdlbmVyYXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMgVGhlIEpTT04gU2NoZW1hIHdpdGggYW4gXCJhbnlPZlwiIGNsYXVzZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGJ1aWxkTWl4ZWRBcnJheVNjaGVtYShcbiAgICBkYXRhOiB1bmtub3duW10sXG4gICAgb3B0aW9uczogSnNvblNjaGVtYUdlbmVyYXRvck9wdGlvbnMsXG4gICk6IEpTT05TY2hlbWFUeXBlIHtcbiAgICBjb25zdCBzY2hlbWFzID0gZGF0YS5tYXAoKGl0ZW0pID0+IHRoaXMuYnVpbGRTY2hlbWEoaXRlbSwgb3B0aW9ucykpO1xuICAgIGNvbnN0IHVuaXF1ZVNjaGVtYXMgPSB0aGlzLm1lcmdlU2ltaWxhclNjaGVtYXMoc2NoZW1hcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICBpdGVtczogdW5pcXVlU2NoZW1hcy5sZW5ndGggPT09IDEgPyB1bmlxdWVTY2hlbWFzWzBdIDogeyBhbnlPZjogdW5pcXVlU2NoZW1hcyB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgSlNPTiBTY2hlbWEgZm9yIGFuIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgb2JqZWN0IGRhdGEuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gR2VuZXJhdGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyBUaGUgSlNPTiBTY2hlbWEgZm9yIHRoZSBvYmplY3QuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBidWlsZE9iamVjdFNjaGVtYShcbiAgICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBvcHRpb25zOiBKc29uU2NoZW1hR2VuZXJhdG9yT3B0aW9ucyxcbiAgKTogSlNPTlNjaGVtYVR5cGUge1xuICAgIGNvbnN0IHByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogSlNPTlNjaGVtYVR5cGUgfSA9IHt9O1xuICAgIGNvbnN0IHJlcXVpcmVkOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHsgcmVxdWlyZUFsbCA9IGZhbHNlIH0gPSBvcHRpb25zO1xuXG4gICAgT2JqZWN0LmVudHJpZXMoZGF0YSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBwcm9wZXJ0aWVzW2tleV0gPSB0aGlzLmJ1aWxkU2NoZW1hKHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGlmIChyZXF1aXJlQWxsKSByZXF1aXJlZC5wdXNoKGtleSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICAgLi4uKHJlcXVpcmVkLmxlbmd0aCA+IDAgPyB7IHJlcXVpcmVkIH0gOiB7fSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBtZXJnZSB0d28gSlNPTiBTY2hlbWFzLiBNZXJnaW5nIGlzIG9ubHkgc3VjY2Vzc2Z1bCBpZiBib3RoIHNjaGVtYXMgaGF2ZSB0aGUgc2FtZSB0eXBlXG4gICAqIGFuZCB0aGVyZSBhcmUgbm8gY29uZmxpY3RzIHdpdGhpbiBkZWZpbmVkIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBzY2hlbWFBIC0gVGhlIGZpcnN0IEpTT04gU2NoZW1hLlxuICAgKiBAcGFyYW0gc2NoZW1hQiAtIFRoZSBzZWNvbmQgSlNPTiBTY2hlbWEuXG4gICAqIEByZXR1cm5zIFRoZSBtZXJnZWQgc2NoZW1hIGlmIHN1Y2Nlc3NmdWw7IG90aGVyd2lzZSwgbnVsbC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIG1lcmdlVHdvU2NoZW1hcyhcbiAgICBzY2hlbWFBOiBKU09OU2NoZW1hVHlwZSxcbiAgICBzY2hlbWFCOiBKU09OU2NoZW1hVHlwZSxcbiAgKTogSlNPTlNjaGVtYVR5cGUgfCBudWxsIHtcbiAgICBpZiAoc2NoZW1hQS50eXBlICE9PSBzY2hlbWFCLnR5cGUpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcHJvcHNBID0gc2NoZW1hQS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGNvbnN0IHByb3BzQiA9IHNjaGVtYUIucHJvcGVydGllcyB8fCB7fTtcbiAgICBjb25zdCBhbGxLZXlzID0gQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhwcm9wc0EpLCAuLi5PYmplY3Qua2V5cyhwcm9wc0IpXSkpO1xuXG4gICAgY29uc3QgaGFzQ29uZmxpY3QgPSBhbGxLZXlzLnNvbWUoXG4gICAgICAoa2V5KSA9PlxuICAgICAgICBrZXkgaW4gcHJvcHNBICYmXG4gICAgICAgIGtleSBpbiBwcm9wc0IgJiZcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocHJvcHNBW2tleV0pICE9PSBKU09OLnN0cmluZ2lmeShwcm9wc0Jba2V5XSksXG4gICAgKTtcbiAgICBpZiAoaGFzQ29uZmxpY3QpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgbWVyZ2VkUHJvcGVydGllcyA9IGFsbEtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgYWNjW2tleV0gPSBwcm9wc0Fba2V5XSB8fCBwcm9wc0Jba2V5XTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgeyBba2V5OiBzdHJpbmddOiBKU09OU2NoZW1hVHlwZSB9KTtcblxuICAgIC8vIEEgcHJvcGVydHkgaXMgcmVxdWlyZWQgaW4gdGhlIG1lcmdlZCBzY2hlbWEgb25seSBpZiBpdCB3YXMgcmVxdWlyZWQgaW4gYm90aC5cbiAgICBjb25zdCByZXF1aXJlZEEgPSBuZXcgU2V0KHNjaGVtYUEucmVxdWlyZWQgfHwgW10pO1xuICAgIGNvbnN0IHJlcXVpcmVkTWVyZ2VkID0gKHNjaGVtYUIucmVxdWlyZWQgfHwgW10pLmZpbHRlcigoZmllbGQpID0+IHJlcXVpcmVkQS5oYXMoZmllbGQpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zY2hlbWFBLFxuICAgICAgLi4uc2NoZW1hQixcbiAgICAgIHR5cGU6IHNjaGVtYUEudHlwZSxcbiAgICAgIC4uLihPYmplY3Qua2V5cyhtZXJnZWRQcm9wZXJ0aWVzKS5sZW5ndGggPiAwID8geyBwcm9wZXJ0aWVzOiBtZXJnZWRQcm9wZXJ0aWVzIH0gOiB7fSksXG4gICAgICAuLi4ocmVxdWlyZWRNZXJnZWQubGVuZ3RoID4gMCA/IHsgcmVxdWlyZWQ6IHJlcXVpcmVkTWVyZ2VkIH0gOiB7fSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgYW4gYXJyYXkgb2YgSlNPTiBTY2hlbWFzLiBTY2hlbWFzIHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgbm9uLWNvbmZsaWN0aW5nXG4gICAqIGRlZmluaXRpb25zIGFyZSBtZXJnZWQgdG9nZXRoZXIuXG4gICAqXG4gICAqIEBwYXJhbSBzY2hlbWFzIC0gVGhlIGxpc3Qgb2Ygc2NoZW1hcyB0byBtZXJnZS5cbiAgICogQHJldHVybnMgQSBkZWR1cGxpY2F0ZWQgbGlzdCBvZiBtZXJnZWQgc2NoZW1hcy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIG1lcmdlU2ltaWxhclNjaGVtYXMoc2NoZW1hczogSlNPTlNjaGVtYVR5cGVbXSk6IEpTT05TY2hlbWFUeXBlW10ge1xuICAgIGlmIChzY2hlbWFzLmxlbmd0aCA8PSAxKSByZXR1cm4gWy4uLnNjaGVtYXNdO1xuXG4gICAgbGV0IG1lcmdlZFNjaGVtYXMgPSBbLi4uc2NoZW1hc107XG5cbiAgICAvLyBBdHRlbXB0IG9uZSBtZXJnZSBwYXNzXG4gICAgY29uc3QgYXR0ZW1wdE1lcmdlID0gKFxuICAgICAgc2NoZW1hc0xpc3Q6IEpTT05TY2hlbWFUeXBlW10sXG4gICAgKTogeyBzY2hlbWFzOiBKU09OU2NoZW1hVHlwZVtdOyBtZXJnZWQ6IGJvb2xlYW4gfSA9PiB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVtYXNMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IHNjaGVtYXNMaXN0Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgY29uc3QgbWVyZ2VkID0gdGhpcy5tZXJnZVR3b1NjaGVtYXMoc2NoZW1hc0xpc3RbaV0sIHNjaGVtYXNMaXN0W2pdKTtcbiAgICAgICAgICBpZiAobWVyZ2VkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTY2hlbWFzID0gW1xuICAgICAgICAgICAgICAuLi5zY2hlbWFzTGlzdC5zbGljZSgwLCBpKSxcbiAgICAgICAgICAgICAgbWVyZ2VkLFxuICAgICAgICAgICAgICAuLi5zY2hlbWFzTGlzdC5zbGljZShpICsgMSwgaiksXG4gICAgICAgICAgICAgIC4uLnNjaGVtYXNMaXN0LnNsaWNlKGogKyAxKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICByZXR1cm4geyBzY2hlbWFzOiBuZXdTY2hlbWFzLCBtZXJnZWQ6IHRydWUgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHNjaGVtYXM6IHNjaGVtYXNMaXN0LCBtZXJnZWQ6IGZhbHNlIH07XG4gICAgfTtcblxuICAgIGxldCByZXN1bHQgPSBhdHRlbXB0TWVyZ2UobWVyZ2VkU2NoZW1hcyk7XG4gICAgd2hpbGUgKHJlc3VsdC5tZXJnZWQpIHtcbiAgICAgIG1lcmdlZFNjaGVtYXMgPSByZXN1bHQuc2NoZW1hcztcbiAgICAgIHJlc3VsdCA9IGF0dGVtcHRNZXJnZShtZXJnZWRTY2hlbWFzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2VkU2NoZW1hcztcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=json-schema-generator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-generator.test.d.ts","sourceRoot":"","sources":["../../src/utils/json-schema-generator.test.ts"],"names":[],"mappings":""}
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEtZ2VuZXJhdG9yLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvanNvbi1zY2hlbWEtZ2VuZXJhdG9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtRUFJaUM7QUFDakMsbUNBQStDO0FBUy9DLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDbkMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDMUIsTUFBTSxTQUFTLEdBQXFCO1lBQ2xDO2dCQUNFLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLEtBQUssRUFBRSxNQUFNO2dCQUNiLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7YUFDN0I7WUFDRDtnQkFDRSxJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixLQUFLLEVBQUUsR0FBRztnQkFDVixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2FBQzdCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTthQUM5QjtZQUNEO2dCQUNFLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDM0I7WUFDRDtnQkFDRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7YUFDcEQ7WUFDRDtnQkFDRSxJQUFJLEVBQUUseUJBQXlCO2dCQUMvQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEIsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUU7YUFDdkQ7WUFDRDtnQkFDRSxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7Z0JBQ3RDLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBQzlCLFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7cUJBQy9CO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUseUJBQXlCO2dCQUMvQixLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7Z0JBQ3RDLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7Z0JBQy9CLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO2FBQ3ZEO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtnQkFDaEMsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3dCQUN4QixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3FCQUN4QjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGlDQUFpQztnQkFDdkMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO2dCQUNoQyxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO2dCQUM3QixRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3hCLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7cUJBQ3hCO29CQUNELFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7aUJBQzFCO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsZUFBZTtnQkFDckIsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSxNQUFNO29CQUNaLE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsYUFBYTt3QkFDckIsSUFBSSxFQUFFLFFBQVE7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3dCQUN4QixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsVUFBVSxFQUFFO2dDQUNWLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0NBQzFCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7NkJBQ3pCO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQztnQkFDeEIsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUU7aUJBQ2pEO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixLQUFLLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLE1BQU07b0JBQ1osT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztpQkFDL0I7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3dCQUN4QixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRTtxQkFDdEQ7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLEtBQUssRUFBRTtvQkFDTCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtvQkFDdkIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7aUJBQ3hCO2dCQUNELFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsVUFBVSxFQUFFOzRCQUNWLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7NEJBQ3RCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7eUJBQ3pCO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsMEJBQTBCO2dCQUNoQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQztnQkFDNUMsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRTt3QkFDTCxLQUFLLEVBQUU7NEJBQ0wsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFOzRCQUNsQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7NEJBQ2xCO2dDQUNFLElBQUksRUFBRSxRQUFRO2dDQUNkLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRTs2QkFDekM7NEJBQ0QsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3lCQUNwQjtxQkFDRjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsS0FBSyxFQUFFO29CQUNMLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDTixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ1A7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO2lCQUNwRDthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsS0FBSyxFQUFFO29CQUNMLEVBQUUsRUFBRSxDQUFDO29CQUNMLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsTUFBTTt3QkFDWixRQUFRLEVBQUU7NEJBQ1IsS0FBSyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELFdBQVcsRUFBRTs0QkFDWCxhQUFhLEVBQUUsSUFBSTs0QkFDbkIsS0FBSyxFQUFFO2dDQUNMLElBQUksRUFBRSxLQUFLO2dDQUNYLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7NkJBQzFCO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNELE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7Z0JBQzdCLFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO29CQUN4QixVQUFVLEVBQUU7d0JBQ1YsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt3QkFDdEIsSUFBSSxFQUFFOzRCQUNKLElBQUksRUFBRSxRQUFROzRCQUNkLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDOzRCQUM3QyxVQUFVLEVBQUU7Z0NBQ1YsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQ0FDeEIsUUFBUSxFQUFFO29DQUNSLElBQUksRUFBRSxRQUFRO29DQUNkLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7b0NBQzVCLFVBQVUsRUFBRTt3Q0FDVixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRTt3Q0FDbkQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtxQ0FDeEI7aUNBQ0Y7Z0NBQ0QsV0FBVyxFQUFFO29DQUNYLElBQUksRUFBRSxRQUFRO29DQUNkLFFBQVEsRUFBRSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUM7b0NBQ3BDLFVBQVUsRUFBRTt3Q0FDVixhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3dDQUNsQyxLQUFLLEVBQUU7NENBQ0wsSUFBSSxFQUFFLFFBQVE7NENBQ2QsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzs0Q0FDNUIsVUFBVSxFQUFFO2dEQUNWLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7Z0RBQ3pCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFOzZDQUNyRDt5Q0FDRjtxQ0FDRjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHFDQUFxQztnQkFDM0MsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7Z0JBQzdCLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7Z0JBQy9CLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO2FBQ3ZEO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGtEQUFrRDtnQkFDeEQsS0FBSyxFQUFFO29CQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO29CQUN2QixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO2lCQUNqQztnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLE9BQU87b0JBQ2IsS0FBSyxFQUFFO3dCQUNMLElBQUksRUFBRSxRQUFRO3dCQUNkLFVBQVUsRUFBRTs0QkFDVixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFOzRCQUN0QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFOzRCQUN4QixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3lCQUN4QjtxQkFDRjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHFEQUFxRDtnQkFDM0QsS0FBSyxFQUFFO29CQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO29CQUN2QixFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLGlDQUFpQztpQkFDL0Q7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRTt3QkFDTCxLQUFLLEVBQUU7NEJBQ0w7Z0NBQ0UsSUFBSSxFQUFFLFFBQVE7Z0NBQ2QsVUFBVSxFQUFFO29DQUNWLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0NBQ3RCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7aUNBQ3pCOzZCQUNGOzRCQUNEO2dDQUNFLElBQUksRUFBRSxRQUFRO2dDQUNkLFVBQVUsRUFBRTtvQ0FDVixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29DQUN0QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2lDQUN6Qjs2QkFDRjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSxFQUFFO2dCQUNULFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO2lCQUN2QjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHdCQUF3QjtnQkFDOUIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO2dCQUNmLFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2lCQUMxQjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLDBCQUEwQjtnQkFDaEMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDaEMsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxVQUFVLEVBQUU7NEJBQ1YsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDdEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt5QkFDekI7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSxnQ0FBZ0M7Z0JBQ3RDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEIsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsT0FBTzt3QkFDYixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3FCQUMxQjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHNEQUFzRDtnQkFDNUQsS0FBSyxFQUFFO29CQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7b0JBQ2hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtpQkFDbkQ7Z0JBQ0QsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtnQkFDN0IsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxVQUFVLEVBQUU7NEJBQ1YsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDdEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDeEIsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDdkIsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt5QkFDMUI7d0JBQ0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztxQkFDekI7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRixxQkFBcUI7UUFDckIsSUFBQSxjQUFNLEVBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1lBQy9ELEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNaLE1BQU0sTUFBTSxHQUFHLDJDQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFRMUIsTUFBTSxjQUFjLEdBQXVCO1lBQ3pDO2dCQUNFLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLEtBQUssRUFBRSxHQUFHO2dCQUNWLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQzFCLGFBQWEsRUFBRSxtQkFBbUI7YUFDbkM7U0FDRixDQUFDO1FBRUYsSUFBQSxjQUFNLEVBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFO1lBQ3hFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNaLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQ0FBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25GLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSnNvblNjaGVtYUdlbmVyYXRvcixcbiAgSlNPTlNjaGVtYVR5cGUsXG4gIEpzb25TY2hlbWFHZW5lcmF0b3JPcHRpb25zLFxufSBmcm9tICcuL2pzb24tc2NoZW1hLWdlbmVyYXRvcic7XG5pbXBvcnQgeyBCYXNlVGVzdENhc2UsIGZpbHRlciB9IGZyb20gJy4vdGVzdHMnO1xuXG50eXBlIFNjaGVtYVRlc3RDYXNlID0gQmFzZVRlc3RDYXNlICYge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlucHV0OiB1bmtub3duO1xuICBvcHRpb25zPzogSnNvblNjaGVtYUdlbmVyYXRvck9wdGlvbnM7XG4gIGV4cGVjdGVkOiBKU09OU2NoZW1hVHlwZTtcbn07XG5cbmRlc2NyaWJlKCdKc29uU2NoZW1hR2VuZXJhdG9yJywgKCkgPT4ge1xuICBkZXNjcmliZSgnZ2VuZXJhdGUoKScsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0Q2FzZXM6IFNjaGVtYVRlc3RDYXNlW10gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwcmltaXRpdmUgLSBzdHJpbmcnLFxuICAgICAgICBpbnB1dDogJ3Rlc3QnLFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3ByaW1pdGl2ZSAtIG51bWJlcicsXG4gICAgICAgIGlucHV0OiAxMjMsXG4gICAgICAgIGV4cGVjdGVkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAncHJpbWl0aXZlIC0gYm9vbGVhbicsXG4gICAgICAgIGlucHV0OiB0cnVlLFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwcmltaXRpdmUgLSBudWxsJyxcbiAgICAgICAgaW5wdXQ6IG51bGwsXG4gICAgICAgIGV4cGVjdGVkOiB7IHR5cGU6ICdudWxsJyB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VtcHR5IGFycmF5JyxcbiAgICAgICAgaW5wdXQ6IFtdLFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnYW55JyB9IH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2ltcGxlIGFycmF5IG9mIG51bWJlcnMnLFxuICAgICAgICBpbnB1dDogWzEsIDIsIDNdLFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnbnVtYmVyJyB9IH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZW51bSBkZXRlY3Rpb24gZnJvbSBhcnJheScsXG4gICAgICAgIGlucHV0OiBbJ3JlZCcsICdncmVlbicsICdyZWQnLCAnYmx1ZSddLFxuICAgICAgICBvcHRpb25zOiB7IGRldGVjdEVudW1zOiB0cnVlIH0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbnVtOiBbJ3JlZCcsICdncmVlbicsICdibHVlJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbnVtIGRldGVjdGlvbiBkaXNhYmxlZCcsXG4gICAgICAgIGlucHV0OiBbJ3JlZCcsICdncmVlbicsICdyZWQnLCAnYmx1ZSddLFxuICAgICAgICBvcHRpb25zOiB7IGRldGVjdEVudW1zOiBmYWxzZSB9LFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9IH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2ltcGxlIG9iamVjdCcsXG4gICAgICAgIGlucHV0OiB7IG5hbWU6ICdKb2huJywgYWdlOiAzMCB9LFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIGFnZTogeyB0eXBlOiAnbnVtYmVyJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb2JqZWN0IHdpdGggcmVxdWlyZWQgcHJvcGVydGllcycsXG4gICAgICAgIGlucHV0OiB7IG5hbWU6ICdKb2huJywgYWdlOiAzMCB9LFxuICAgICAgICBvcHRpb25zOiB7IHJlcXVpcmVBbGw6IHRydWUgfSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICBhZ2U6IHsgdHlwZTogJ251bWJlcicgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ25hbWUnLCAnYWdlJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbmVzdGVkIG9iamVjdCcsXG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgIHN0cmVldDogJzEyMyBNYWluIFN0JyxcbiAgICAgICAgICAgIGNpdHk6ICdCb3N0b24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgbmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHN0cmVldDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICAgIGNpdHk6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdtaXhlZCBhcnJheSBvZiBwcmltaXRpdmVzJyxcbiAgICAgICAgaW5wdXQ6IFsxLCAndGVzdCcsIHRydWVdLFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgaXRlbXM6IHsgdHlwZTogWydudW1iZXInLCAnc3RyaW5nJywgJ2Jvb2xlYW4nXSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29iamVjdCB3aXRoIGFycmF5JyxcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBuYW1lOiAnSm9obicsXG4gICAgICAgICAgaG9iYmllczogWydyZWFkaW5nJywgJ2dhbWluZyddLFxuICAgICAgICB9LFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIGhvYmJpZXM6IHsgdHlwZTogJ2FycmF5JywgaXRlbXM6IHsgdHlwZTogJ3N0cmluZycgfSB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgb2Ygb2JqZWN0cycsXG4gICAgICAgIGlucHV0OiBbXG4gICAgICAgICAgeyBpZDogMSwgbmFtZTogJ0pvaG4nIH0sXG4gICAgICAgICAgeyBpZDogMiwgbmFtZTogJ0phbmUnIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdtaXhlZCBhcnJheSB3aXRoIG9iamVjdHMnLFxuICAgICAgICBpbnB1dDogWzEyMywgJ3Rlc3QnLCB7IG5hbWU6ICdKb2huJyB9LCB0cnVlXSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICBhbnlPZjogW1xuICAgICAgICAgICAgICB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgbmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHsgdHlwZTogJ2Jvb2xlYW4nIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgb2YgYXJyYXlzJyxcbiAgICAgICAgaW5wdXQ6IFtcbiAgICAgICAgICBbMSwgMl0sXG4gICAgICAgICAgWzMsIDRdLFxuICAgICAgICBdLFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgaXRlbXM6IHsgdHlwZTogJ2FycmF5JywgaXRlbXM6IHsgdHlwZTogJ251bWJlcicgfSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NvbXBsZXggbmVzdGVkIG9iamVjdCcsXG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICAgICAgY29udGFjdHM6IHtcbiAgICAgICAgICAgICAgZW1haWw6IFsnam9obkBleGFtcGxlLmNvbScsICdqb2huLmRvZUBleGFtcGxlLmNvbSddLFxuICAgICAgICAgICAgICBwaG9uZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmZXJlbmNlczoge1xuICAgICAgICAgICAgICBub3RpZmljYXRpb25zOiB0cnVlLFxuICAgICAgICAgICAgICB0aGVtZToge1xuICAgICAgICAgICAgICAgIGRhcms6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbG9yczogWydibHVlJywgJ2dyZWVuJ10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHsgcmVxdWlyZUFsbDogdHJ1ZSB9LFxuICAgICAgICBleHBlY3RlZDoge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ2lkJywgJ3VzZXInXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBpZDogeyB0eXBlOiAnbnVtYmVyJyB9LFxuICAgICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnbmFtZScsICdjb250YWN0cycsICdwcmVmZXJlbmNlcyddLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICAgIGNvbnRhY3RzOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ2VtYWlsJywgJ3Bob25lJ10sXG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6ICdhcnJheScsIGl0ZW1zOiB7IHR5cGU6ICdzdHJpbmcnIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogJ251bGwnIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJlZmVyZW5jZXM6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnbm90aWZpY2F0aW9ucycsICd0aGVtZSddLFxuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25zOiB7IHR5cGU6ICdib29sZWFuJyB9LFxuICAgICAgICAgICAgICAgICAgICB0aGVtZToge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ2RhcmsnLCAnY29sb3JzJ10sXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGFyazogeyB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzdHJpbmcgYXJyYXkgd2l0aCBubyBlbnVtIGRldGVjdGlvbicsXG4gICAgICAgIGlucHV0OiBbJ3JlZCcsICdyZWQnLCAnYmx1ZSddLFxuICAgICAgICBvcHRpb25zOiB7IGRldGVjdEVudW1zOiBmYWxzZSB9LFxuICAgICAgICBleHBlY3RlZDogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9IH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgd2l0aCBtaXhlZCBvYmplY3QgdHlwZXMgdGhhdCBjYW4gYmUgbWVyZ2VkJyxcbiAgICAgICAgaW5wdXQ6IFtcbiAgICAgICAgICB7IGlkOiAxLCBuYW1lOiAnSm9obicgfSxcbiAgICAgICAgICB7IGlkOiAyLCBuYW1lOiAnSmFuZScsIGFnZTogMzAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogJ251bWJlcicgfSxcbiAgICAgICAgICAgICAgbmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICBhZ2U6IHsgdHlwZTogJ251bWJlcicgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhcnJheSB3aXRoIG1peGVkIG9iamVjdCB0eXBlcyB0aGF0IGNhbm5vdCBiZSBtZXJnZWQnLFxuICAgICAgICBpbnB1dDogW1xuICAgICAgICAgIHsgaWQ6IDEsIG5hbWU6ICdKb2huJyB9LFxuICAgICAgICAgIHsgaWQ6ICdBQkMnLCBuYW1lOiAnSmFuZScgfSwgLy8gaWQgaXMgc3RyaW5nIGluc3RlYWQgb2YgbnVtYmVyXG4gICAgICAgIF0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgYW55T2Y6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbXB0eSBhcnJheScsXG4gICAgICAgIGlucHV0OiBbXSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdhbnknIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgd2l0aCBzaW5nbGUgaXRlbScsXG4gICAgICAgIGlucHV0OiBbJ3Rlc3QnXSxcbiAgICAgICAgZXhwZWN0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXJyYXkgd2l0aCBzaW5nbGUgb2JqZWN0JyxcbiAgICAgICAgaW5wdXQ6IFt7IGlkOiAxLCBuYW1lOiAnSm9obicgfV0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhcnJheSB3aXRoIHNpbmdsZSBuZXN0ZWQgYXJyYXknLFxuICAgICAgICBpbnB1dDogW1sxLCAyLCAzXV0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhcnJheSB3aXRoIG9iamVjdHMgaGF2aW5nIGNvbW1vbiByZXF1aXJlZCBwcm9wZXJ0aWVzJyxcbiAgICAgICAgaW5wdXQ6IFtcbiAgICAgICAgICB7IGlkOiAxLCBuYW1lOiAnSm9obicsIGFnZTogMzAgfSxcbiAgICAgICAgICB7IGlkOiAyLCBuYW1lOiAnSmFuZScsIGVtYWlsOiAnamFuZUBleGFtcGxlLmNvbScgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczogeyByZXF1aXJlQWxsOiB0cnVlIH0sXG4gICAgICAgIGV4cGVjdGVkOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgYWdlOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IFsnaWQnLCAnbmFtZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG5cbiAgICAvLyBSdW4gYWxsIHRlc3QgY2FzZXNcbiAgICBmaWx0ZXIodGVzdENhc2VzKS5mb3JFYWNoKCh7IG5hbWUsIGlucHV0LCBvcHRpb25zLCBleHBlY3RlZCB9KSA9PiB7XG4gICAgICBpdChuYW1lLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IEpzb25TY2hlbWFHZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdGUoKScsICgpID0+IHtcbiAgICB0eXBlIFZhbGlkYXRlVGVzdENhc2UgPSBCYXNlVGVzdENhc2UgJiB7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBpbnB1dDogdW5rbm93bjtcbiAgICAgIHNjaGVtYTogSlNPTlNjaGVtYVR5cGU7XG4gICAgICBleHBlY3RlZEVycm9yOiBzdHJpbmc7XG4gICAgfTtcblxuICAgIGNvbnN0IGVycm9yVGVzdENhc2VzOiBWYWxpZGF0ZVRlc3RDYXNlW10gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdpbnZhbGlkIHNjaGVtYSB0eXBlJyxcbiAgICAgICAgaW5wdXQ6IDEyMyxcbiAgICAgICAgc2NoZW1hOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgIGV4cGVjdGVkRXJyb3I6ICdWYWxpZGF0aW9uIGZhaWxlZCcsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBmaWx0ZXIoZXJyb3JUZXN0Q2FzZXMpLmZvckVhY2goKHsgbmFtZSwgaW5wdXQsIHNjaGVtYSwgZXhwZWN0ZWRFcnJvciB9KSA9PiB7XG4gICAgICBpdChuYW1lLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdCgoKSA9PiBKc29uU2NoZW1hR2VuZXJhdG9yLnZhbGlkYXRlKGlucHV0LCBzY2hlbWEpKS50b1Rocm93KGV4cGVjdGVkRXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -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" | "NULL" | "array";
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,6 @@
1
+ export type BaseTestCase = {
2
+ skip?: boolean;
3
+ only?: boolean;
4
+ };
5
+ export declare const filter: <T extends BaseTestCase>(testCases: T[]) => T[];
6
+ //# sourceMappingURL=tests.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tests.test.d.ts.map
@@ -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.17",
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",