@agentica/core 0.36.2 → 0.36.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.mjs +156 -157
- package/lib/index.mjs.map +1 -1
- package/lib/orchestrate/call.js +2 -3
- package/lib/orchestrate/call.js.map +1 -1
- package/lib/utils/JsonUtil.d.ts +3 -0
- package/lib/utils/JsonUtil.js +201 -4
- package/lib/utils/JsonUtil.js.map +1 -1
- package/lib/utils/stringifyValidateFailure.spec.js +41 -41
- package/lib/utils/stringifyValidateFailure.spec.js.map +1 -1
- package/package.json +2 -2
- package/src/orchestrate/call.ts +2 -3
- package/src/utils/JsonUtil.ts +255 -4
- package/src/utils/stringifyValidateFailure.spec.ts +41 -41
- package/lib/utils/JsonUtil.spec.d.ts +0 -1
- package/lib/utils/JsonUtil.spec.js +0 -151
- package/lib/utils/JsonUtil.spec.js.map +0 -1
- package/lib/utils/stringifyValidateFailure.d.ts +0 -2
- package/lib/utils/stringifyValidateFailure.js +0 -201
- package/lib/utils/stringifyValidateFailure.js.map +0 -1
- package/src/utils/JsonUtil.spec.ts +0 -190
- package/src/utils/stringifyValidateFailure.ts +0 -251
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { IValidation } from "@samchon/openapi";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { JsonUtil } from "./JsonUtil";
|
|
4
4
|
|
|
5
|
-
describe("stringifyValidateFailure", () => {
|
|
5
|
+
describe("jsonUtil.JsonUtil.stringifyValidateFailure", () => {
|
|
6
6
|
describe("missing Properties", () => {
|
|
7
7
|
it("should display missing required property as undefined with error comment", () => {
|
|
8
8
|
const failure: IValidation.IFailure = {
|
|
@@ -19,7 +19,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
19
19
|
],
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const result = stringifyValidateFailure(failure);
|
|
22
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
23
23
|
|
|
24
24
|
expect(result).toContain("\"email\": undefined");
|
|
25
25
|
expect(result).toContain("// ❌");
|
|
@@ -47,7 +47,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
47
47
|
],
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
const result = stringifyValidateFailure(failure);
|
|
50
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
51
51
|
|
|
52
52
|
expect(result).toContain("\"email\": undefined");
|
|
53
53
|
expect(result).toContain("\"age\": undefined");
|
|
@@ -72,7 +72,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
72
72
|
],
|
|
73
73
|
};
|
|
74
74
|
|
|
75
|
-
const result = stringifyValidateFailure(failure);
|
|
75
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
76
76
|
|
|
77
77
|
expect(result).toContain("\"user\":");
|
|
78
78
|
expect(result).toContain("\"email\": undefined");
|
|
@@ -100,7 +100,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
100
100
|
],
|
|
101
101
|
};
|
|
102
102
|
|
|
103
|
-
const result = stringifyValidateFailure(failure);
|
|
103
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
104
104
|
|
|
105
105
|
expect(result).toContain("\"name\": \"John\"");
|
|
106
106
|
expect(result).toContain("\"age\": 30");
|
|
@@ -125,7 +125,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
125
125
|
],
|
|
126
126
|
};
|
|
127
127
|
|
|
128
|
-
const result = stringifyValidateFailure(failure);
|
|
128
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
129
129
|
|
|
130
130
|
// Should NOT add "profile" at user level
|
|
131
131
|
// The error is too deep to be represented at the user object level
|
|
@@ -150,7 +150,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
150
150
|
],
|
|
151
151
|
};
|
|
152
152
|
|
|
153
|
-
const result = stringifyValidateFailure(failure);
|
|
153
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
154
154
|
|
|
155
155
|
expect(result).toContain("\"age\": \"25\"");
|
|
156
156
|
expect(result).toContain("// ❌");
|
|
@@ -172,7 +172,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
172
172
|
],
|
|
173
173
|
};
|
|
174
174
|
|
|
175
|
-
const result = stringifyValidateFailure(failure);
|
|
175
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
176
176
|
|
|
177
177
|
expect(result).toContain("\"name\": 123");
|
|
178
178
|
expect(result).toContain("// ❌");
|
|
@@ -194,7 +194,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
194
194
|
],
|
|
195
195
|
};
|
|
196
196
|
|
|
197
|
-
const result = stringifyValidateFailure(failure);
|
|
197
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
198
198
|
|
|
199
199
|
expect(result).toContain("\"status\": true");
|
|
200
200
|
expect(result).toContain("// ❌");
|
|
@@ -216,7 +216,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
216
216
|
],
|
|
217
217
|
};
|
|
218
218
|
|
|
219
|
-
const result = stringifyValidateFailure(failure);
|
|
219
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
220
220
|
|
|
221
221
|
expect(result).toContain("\"value\": null");
|
|
222
222
|
expect(result).toContain("// ❌");
|
|
@@ -240,7 +240,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
240
240
|
],
|
|
241
241
|
};
|
|
242
242
|
|
|
243
|
-
const result = stringifyValidateFailure(failure);
|
|
243
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
244
244
|
|
|
245
245
|
expect(result).toContain("\"email\": \"invalid-email\"");
|
|
246
246
|
expect(result).toContain("// ❌");
|
|
@@ -262,7 +262,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
262
262
|
],
|
|
263
263
|
};
|
|
264
264
|
|
|
265
|
-
const result = stringifyValidateFailure(failure);
|
|
265
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
266
266
|
|
|
267
267
|
expect(result).toContain("\"id\": \"not-a-uuid\"");
|
|
268
268
|
expect(result).toContain("// ❌");
|
|
@@ -284,7 +284,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
284
284
|
],
|
|
285
285
|
};
|
|
286
286
|
|
|
287
|
-
const result = stringifyValidateFailure(failure);
|
|
287
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
288
288
|
|
|
289
289
|
expect(result).toContain("\"createdAt\": \"tomorrow\"");
|
|
290
290
|
expect(result).toContain("// ❌");
|
|
@@ -307,7 +307,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
307
307
|
],
|
|
308
308
|
};
|
|
309
309
|
|
|
310
|
-
const result = stringifyValidateFailure(failure);
|
|
310
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
311
311
|
|
|
312
312
|
expect(result).toContain("\"email\": \"invalid\"");
|
|
313
313
|
expect(result).toContain("// ❌");
|
|
@@ -334,7 +334,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
334
334
|
],
|
|
335
335
|
};
|
|
336
336
|
|
|
337
|
-
const result = stringifyValidateFailure(failure);
|
|
337
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
338
338
|
|
|
339
339
|
expect(result).toContain("\"user\":");
|
|
340
340
|
expect(result).toContain("\"name\": \"John\"");
|
|
@@ -364,7 +364,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
364
364
|
],
|
|
365
365
|
};
|
|
366
366
|
|
|
367
|
-
const result = stringifyValidateFailure(failure);
|
|
367
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
368
368
|
|
|
369
369
|
expect(result).toContain("\"user\":");
|
|
370
370
|
expect(result).toContain("\"profile\":");
|
|
@@ -396,7 +396,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
396
396
|
],
|
|
397
397
|
};
|
|
398
398
|
|
|
399
|
-
const result = stringifyValidateFailure(failure);
|
|
399
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
400
400
|
|
|
401
401
|
expect(result).toContain("\"name\": 123");
|
|
402
402
|
expect(result).toContain("\"user\":");
|
|
@@ -424,7 +424,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
424
424
|
],
|
|
425
425
|
};
|
|
426
426
|
|
|
427
|
-
const result = stringifyValidateFailure(failure);
|
|
427
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
428
428
|
|
|
429
429
|
expect(result).toContain("\"user\":");
|
|
430
430
|
expect(result).toContain("\"profile\":");
|
|
@@ -450,7 +450,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
450
450
|
],
|
|
451
451
|
};
|
|
452
452
|
|
|
453
|
-
const result = stringifyValidateFailure(failure);
|
|
453
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
454
454
|
|
|
455
455
|
expect(result).toContain("\"tags\":");
|
|
456
456
|
expect(result).toContain("[");
|
|
@@ -481,7 +481,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
481
481
|
],
|
|
482
482
|
};
|
|
483
483
|
|
|
484
|
-
const result = stringifyValidateFailure(failure);
|
|
484
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
485
485
|
|
|
486
486
|
expect(result).toContain("\"numbers\":");
|
|
487
487
|
expect(result).toContain("1,");
|
|
@@ -509,7 +509,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
509
509
|
],
|
|
510
510
|
};
|
|
511
511
|
|
|
512
|
-
const result = stringifyValidateFailure(failure);
|
|
512
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
513
513
|
|
|
514
514
|
expect(result).toContain("\"users\":");
|
|
515
515
|
expect(result).toContain("\"name\": \"John\"");
|
|
@@ -529,7 +529,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
529
529
|
errors: [],
|
|
530
530
|
};
|
|
531
531
|
|
|
532
|
-
const result = stringifyValidateFailure(failure);
|
|
532
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
533
533
|
|
|
534
534
|
expect(result).toContain("\"items\":");
|
|
535
535
|
expect(result).toContain("[]");
|
|
@@ -550,7 +550,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
550
550
|
],
|
|
551
551
|
};
|
|
552
552
|
|
|
553
|
-
const result = stringifyValidateFailure(failure);
|
|
553
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
554
554
|
|
|
555
555
|
expect(result).toContain("\"tags\": \"single-value\"");
|
|
556
556
|
expect(result).toContain("// ❌");
|
|
@@ -590,7 +590,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
590
590
|
],
|
|
591
591
|
};
|
|
592
592
|
|
|
593
|
-
const result = stringifyValidateFailure(failure);
|
|
593
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
594
594
|
|
|
595
595
|
expect(result).toContain("\"user\":");
|
|
596
596
|
expect(result).toContain("\"email\": undefined");
|
|
@@ -626,7 +626,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
626
626
|
],
|
|
627
627
|
};
|
|
628
628
|
|
|
629
|
-
const result = stringifyValidateFailure(failure);
|
|
629
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
630
630
|
|
|
631
631
|
expect(result).toContain("\"level1\":");
|
|
632
632
|
expect(result).toContain("\"level2\":");
|
|
@@ -683,7 +683,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
683
683
|
],
|
|
684
684
|
};
|
|
685
685
|
|
|
686
|
-
const result = stringifyValidateFailure(failure);
|
|
686
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
687
687
|
|
|
688
688
|
expect(result).toContain("\"name\": 123");
|
|
689
689
|
expect(result).toContain("\"email\": \"invalid-email\"");
|
|
@@ -712,7 +712,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
712
712
|
],
|
|
713
713
|
};
|
|
714
714
|
|
|
715
|
-
const result = stringifyValidateFailure(failure);
|
|
715
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
716
716
|
|
|
717
717
|
expect(result).toContain("\"special-key\": \"value\"");
|
|
718
718
|
expect(result).toContain("\"key.with.dots\": 123");
|
|
@@ -728,7 +728,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
728
728
|
errors: [],
|
|
729
729
|
};
|
|
730
730
|
|
|
731
|
-
const result = stringifyValidateFailure(failure);
|
|
731
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
732
732
|
|
|
733
733
|
expect(result).toBe("{}");
|
|
734
734
|
});
|
|
@@ -746,7 +746,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
746
746
|
],
|
|
747
747
|
};
|
|
748
748
|
|
|
749
|
-
const result = stringifyValidateFailure(failure);
|
|
749
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
750
750
|
|
|
751
751
|
expect(result).toContain("{");
|
|
752
752
|
expect(result).toContain("\"name\": undefined");
|
|
@@ -767,7 +767,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
767
767
|
],
|
|
768
768
|
};
|
|
769
769
|
|
|
770
|
-
const result = stringifyValidateFailure(failure);
|
|
770
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
771
771
|
|
|
772
772
|
expect(result).toContain("\"wrong-type\"");
|
|
773
773
|
expect(result).toContain("// ❌");
|
|
@@ -787,7 +787,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
787
787
|
],
|
|
788
788
|
};
|
|
789
789
|
|
|
790
|
-
const result = stringifyValidateFailure(failure);
|
|
790
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
791
791
|
|
|
792
792
|
expect(result).toContain("null");
|
|
793
793
|
expect(result).toContain("// ❌");
|
|
@@ -808,7 +808,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
808
808
|
],
|
|
809
809
|
};
|
|
810
810
|
|
|
811
|
-
const result = stringifyValidateFailure(failure);
|
|
811
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
812
812
|
|
|
813
813
|
expect(result).toContain("\"items\":");
|
|
814
814
|
expect(result).toContain("\"valid\"");
|
|
@@ -837,7 +837,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
837
837
|
],
|
|
838
838
|
};
|
|
839
839
|
|
|
840
|
-
const result = stringifyValidateFailure(failure);
|
|
840
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
841
841
|
|
|
842
842
|
expect(result).toContain("\"email\": \"invalid\"");
|
|
843
843
|
expect(result).toContain("// ❌");
|
|
@@ -868,7 +868,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
868
868
|
],
|
|
869
869
|
};
|
|
870
870
|
|
|
871
|
-
const result = stringifyValidateFailure(failure);
|
|
871
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
872
872
|
|
|
873
873
|
expect(result).toContain("\"custom\":");
|
|
874
874
|
expect(result).toContain("\"serialized\": \"test\"");
|
|
@@ -896,7 +896,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
896
896
|
errors,
|
|
897
897
|
};
|
|
898
898
|
|
|
899
|
-
const result = stringifyValidateFailure(failure);
|
|
899
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
900
900
|
|
|
901
901
|
// Should contain all fields
|
|
902
902
|
for (let i = 0; i < 50; i++) {
|
|
@@ -919,7 +919,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
919
919
|
errors: [],
|
|
920
920
|
};
|
|
921
921
|
|
|
922
|
-
const result = stringifyValidateFailure(failure);
|
|
922
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
923
923
|
|
|
924
924
|
// Check that indentation increases with nesting
|
|
925
925
|
const lines = result.split("\n");
|
|
@@ -944,7 +944,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
944
944
|
],
|
|
945
945
|
};
|
|
946
946
|
|
|
947
|
-
const result = stringifyValidateFailure(failure);
|
|
947
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
948
948
|
|
|
949
949
|
expect(result).toContain("\"items\":");
|
|
950
950
|
expect(result).toContain("\"a\"");
|
|
@@ -970,7 +970,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
970
970
|
],
|
|
971
971
|
};
|
|
972
972
|
|
|
973
|
-
const result = stringifyValidateFailure(failure);
|
|
973
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
974
974
|
|
|
975
975
|
expect(result).toContain("// ❌");
|
|
976
976
|
expect(result).toContain("\"path\":\"$input.age\"");
|
|
@@ -994,7 +994,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
994
994
|
],
|
|
995
995
|
};
|
|
996
996
|
|
|
997
|
-
const result = stringifyValidateFailure(failure);
|
|
997
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
998
998
|
|
|
999
999
|
expect(result).toContain("// ❌");
|
|
1000
1000
|
expect(result).toContain("\"description\":\"Must be a valid email address\"");
|
|
@@ -1015,7 +1015,7 @@ describe("stringifyValidateFailure", () => {
|
|
|
1015
1015
|
],
|
|
1016
1016
|
};
|
|
1017
1017
|
|
|
1018
|
-
const result = stringifyValidateFailure(failure);
|
|
1018
|
+
const result = JsonUtil.stringifyValidateFailure(failure);
|
|
1019
1019
|
|
|
1020
1020
|
// Extract error comment
|
|
1021
1021
|
const match = result.match(/\/\/ ❌ (.+)/);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const JsonUtil_1 = require("./JsonUtil");
|
|
4
|
-
describe("jsonUtil", () => {
|
|
5
|
-
describe("parse", () => {
|
|
6
|
-
describe("normal Operations", () => {
|
|
7
|
-
it("should parse standard valid JSON", () => {
|
|
8
|
-
const jsonString = "{\"normal\": \"json\"}";
|
|
9
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
10
|
-
expect(result).toEqual({ normal: "json" });
|
|
11
|
-
});
|
|
12
|
-
it("should handle object with '{}' prefix", () => {
|
|
13
|
-
const jsonString = "{}{\"name\": \"test\", \"value\": 42}";
|
|
14
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
15
|
-
expect(result).toEqual({ name: "test", value: 42 });
|
|
16
|
-
});
|
|
17
|
-
it("should handle array with '{}' prefix", () => {
|
|
18
|
-
const jsonString = "{}[1, 2, 3, \"test\"]";
|
|
19
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
20
|
-
expect(result).toEqual([1, 2, 3, "test"]);
|
|
21
|
-
});
|
|
22
|
-
it("should handle primitive values with '{}' prefix", () => {
|
|
23
|
-
expect(JsonUtil_1.JsonUtil.parse("{}42")).toBe(42);
|
|
24
|
-
expect(JsonUtil_1.JsonUtil.parse("{}\"hello\"")).toBe("hello");
|
|
25
|
-
expect(JsonUtil_1.JsonUtil.parse("{}true")).toBe(true);
|
|
26
|
-
expect(JsonUtil_1.JsonUtil.parse("{}null")).toBeNull();
|
|
27
|
-
});
|
|
28
|
-
it("should remove trailing comma in object", () => {
|
|
29
|
-
const jsonString = "{\"name\": \"test\", \"value\": 42,}";
|
|
30
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
31
|
-
expect(result).toEqual({ name: "test", value: 42 });
|
|
32
|
-
});
|
|
33
|
-
it("should remove trailing comma in array", () => {
|
|
34
|
-
const jsonString = "[1, 2, 3, \"test\",]";
|
|
35
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
36
|
-
expect(result).toEqual([1, 2, 3, "test"]);
|
|
37
|
-
});
|
|
38
|
-
it("should add missing closing brace in object", () => {
|
|
39
|
-
const jsonString = "{\"name\": \"test\", \"value\": 42";
|
|
40
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
41
|
-
expect(result).toEqual({ name: "test", value: 42 });
|
|
42
|
-
});
|
|
43
|
-
it("should add missing closing bracket in array", () => {
|
|
44
|
-
const jsonString = "[1, 2, 3, \"test\"";
|
|
45
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
46
|
-
expect(result).toEqual([1, 2, 3, "test"]);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
describe("combined Features", () => {
|
|
50
|
-
it("should handle '{}' prefix and missing closing brace together", () => {
|
|
51
|
-
const jsonString = "{}{\"name\": \"test\", \"value\": 42";
|
|
52
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
53
|
-
expect(result).toEqual({ name: "test", value: 42 });
|
|
54
|
-
});
|
|
55
|
-
it("should handle '{}' prefix and missing closing bracket together", () => {
|
|
56
|
-
const jsonString = "{}[1, 2, 3, \"test\"";
|
|
57
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
58
|
-
expect(result).toEqual([1, 2, 3, "test"]);
|
|
59
|
-
});
|
|
60
|
-
it("should handle trailing comma in nested objects", () => {
|
|
61
|
-
const jsonString = "{\"user\": {\"id\": 1, \"name\": \"John\",}, \"active\": true,}";
|
|
62
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
63
|
-
expect(result).toEqual({
|
|
64
|
-
user: { id: 1, name: "John" },
|
|
65
|
-
active: true,
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
it("should handle missing closing brace in nested objects", () => {
|
|
69
|
-
const jsonString = "{\"user\": {\"id\": 1, \"name\": \"John\"}";
|
|
70
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
71
|
-
expect(result).toEqual({
|
|
72
|
-
user: { id: 1, name: "John" },
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
it("should handle missing closing brace in complex nested structure", () => {
|
|
76
|
-
const jsonString = "{\"users\": [{\"id\": 1, \"name\": \"John\"}, {\"id\": 2, \"name\": \"Jane\"}], \"count\": 2";
|
|
77
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
78
|
-
expect(result).toEqual({
|
|
79
|
-
users: [
|
|
80
|
-
{ id: 1, name: "John" },
|
|
81
|
-
{ id: 2, name: "Jane" },
|
|
82
|
-
],
|
|
83
|
-
count: 2,
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
it("should apply all correction features together", () => {
|
|
87
|
-
const jsonString = "{}{\"name\": \"test\", \"items\": [1, 2, 3,], \"user\": {\"id\": 1, \"name\": \"John\",}";
|
|
88
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
89
|
-
expect(result).toEqual({
|
|
90
|
-
name: "test",
|
|
91
|
-
items: [1, 2, 3],
|
|
92
|
-
user: { id: 1, name: "John" },
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
it("should handle all issues simultaneously in complex nested structure", () => {
|
|
96
|
-
const jsonString = "{}{\"data\": {\"users\": [{\"id\": 1, \"name\": \"John\",}, {\"id\": 2, \"name\": \"Jane\",}], \"meta\": {\"total\": 2, \"page\": 1,}}, \"status\": \"ok\",";
|
|
97
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
98
|
-
expect(result).toEqual({
|
|
99
|
-
data: {
|
|
100
|
-
users: [
|
|
101
|
-
{ id: 1, name: "John" },
|
|
102
|
-
{ id: 2, name: "Jane" },
|
|
103
|
-
],
|
|
104
|
-
meta: { total: 2, page: 1 },
|
|
105
|
-
},
|
|
106
|
-
status: "ok",
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
describe("edge Cases", () => {
|
|
111
|
-
it("should handle empty object with '{}' prefix", () => {
|
|
112
|
-
const jsonString = "{}{}";
|
|
113
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
114
|
-
expect(result).toEqual({});
|
|
115
|
-
});
|
|
116
|
-
it("should handle empty array with '{}' prefix", () => {
|
|
117
|
-
const jsonString = "{}[]";
|
|
118
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
119
|
-
expect(result).toEqual([]);
|
|
120
|
-
});
|
|
121
|
-
it("should handle nested object with '{}' prefix", () => {
|
|
122
|
-
const jsonString = "{}{\"user\": {\"id\": 1, \"name\": \"John\"}}";
|
|
123
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
124
|
-
expect(result).toEqual({
|
|
125
|
-
user: { id: 1, name: "John" },
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
it("should handle multiple trailing commas", () => {
|
|
129
|
-
const jsonString = "{\"items\": [1, 2, 3,,,], \"count\": 3,,,}";
|
|
130
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
131
|
-
expect(result).toEqual({
|
|
132
|
-
items: [1, 2, 3],
|
|
133
|
-
count: 3,
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
it("should handle JSON with whitespace and formatting issues", () => {
|
|
137
|
-
const jsonString = "{} { \"name\" : \"test\" , \"value\" : 42 , } ";
|
|
138
|
-
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
139
|
-
expect(result).toEqual({ name: "test", value: 42 });
|
|
140
|
-
});
|
|
141
|
-
it("should throw error for completely invalid JSON", () => {
|
|
142
|
-
const invalidJson = "{invalid: json without quotes}";
|
|
143
|
-
expect(() => JsonUtil_1.JsonUtil.parse(invalidJson)).toThrow();
|
|
144
|
-
});
|
|
145
|
-
it("should throw error for empty string", () => {
|
|
146
|
-
expect(() => JsonUtil_1.JsonUtil.parse("")).toThrow();
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
//# sourceMappingURL=JsonUtil.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonUtil.spec.js","sourceRoot":"","sources":["../../src/utils/JsonUtil.spec.ts"],"names":[],"mappings":";;AAAA,yCAAsC;AAEtC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACjC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;gBAC1C,MAAM,UAAU,GAAG,wBAAwB,CAAC;gBAC5C,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBAC/C,MAAM,UAAU,GAAG,uCAAuC,CAAC;gBAC3D,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;gBAC9C,MAAM,UAAU,GAAG,uBAAuB,CAAC;gBAC3C,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;gBACzD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxC,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBAChD,MAAM,UAAU,GAAG,sCAAsC,CAAC;gBAC1D,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBAC/C,MAAM,UAAU,GAAG,sBAAsB,CAAC;gBAC1C,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;gBACpD,MAAM,UAAU,GAAG,oCAAoC,CAAC;gBACxD,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;gBACrD,MAAM,UAAU,GAAG,oBAAoB,CAAC;gBACxC,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACjC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;gBACtE,MAAM,UAAU,GAAG,sCAAsC,CAAC;gBAC1D,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;gBACxE,MAAM,UAAU,GAAG,sBAAsB,CAAC;gBAC1C,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;gBACxD,MAAM,UAAU,GAAG,iEAAiE,CAAC;gBACrF,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;oBAC7B,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;gBAC/D,MAAM,UAAU,GAAG,4CAA4C,CAAC;gBAChE,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;iBAC9B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;gBACzE,MAAM,UAAU,GAAG,8FAA8F,CAAC;gBAClH,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;oBACrB,KAAK,EAAE;wBACL,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;qBACxB;oBACD,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;gBACvD,MAAM,UAAU,GAAG,0FAA0F,CAAC;gBAC9G,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAChB,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;iBAC9B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;gBAC7E,MAAM,UAAU,GAAG,6JAA6J,CAAC;gBACjL,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE;wBACJ,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;4BACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;yBACxB;wBACD,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;qBAC5B;oBACD,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;gBACrD,MAAM,UAAU,GAAG,MAAM,CAAC;gBAC1B,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;gBACpD,MAAM,UAAU,GAAG,MAAM,CAAC;gBAC1B,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;gBACtD,MAAM,UAAU,GAAG,+CAA+C,CAAC;gBACnE,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;iBAC9B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBAChD,MAAM,UAAU,GAAG,4CAA4C,CAAC;gBAChE,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;oBACrB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAChB,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;gBAClE,MAAM,UAAU,GAAG,gDAAgD,CAAC;gBACpE,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;gBACxD,MAAM,WAAW,GAAG,gCAAgC,CAAC;gBAErD,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;gBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|