@agentica/core 0.32.6 → 0.32.7
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 +207 -5
- package/lib/index.mjs.map +1 -1
- package/lib/utils/JsonUtil.d.ts +2 -1
- package/lib/utils/JsonUtil.js +100 -5
- package/lib/utils/JsonUtil.js.map +1 -1
- package/lib/utils/JsonUtil.spec.d.ts +1 -0
- package/lib/utils/JsonUtil.spec.js +83 -0
- package/lib/utils/JsonUtil.spec.js.map +1 -0
- package/lib/utils/StreamUtil.spec.js +0 -5
- package/lib/utils/StreamUtil.spec.js.map +1 -1
- package/package.json +1 -1
- package/src/utils/JsonUtil.spec.ts +104 -0
- package/src/utils/JsonUtil.ts +145 -5
- package/src/utils/StreamUtil.spec.ts +0 -11
package/lib/utils/JsonUtil.js
CHANGED
|
@@ -1,13 +1,108 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JsonUtil = void 0;
|
|
4
|
+
exports.correctMissingLastBrace = correctMissingLastBrace;
|
|
5
|
+
exports.JsonUtil = {
|
|
6
|
+
parse,
|
|
7
|
+
};
|
|
4
8
|
function parse(str) {
|
|
5
|
-
|
|
6
|
-
|
|
9
|
+
const corrected = pipe(stripFirstBrace, correctMissingLastBrace)(str);
|
|
10
|
+
return JSON.parse(corrected);
|
|
11
|
+
}
|
|
12
|
+
const pipe = (...fns) => (str) => fns.reduce((acc, fn) => fn(acc), str);
|
|
13
|
+
function stripFirstBrace(str) {
|
|
14
|
+
if (RegExp("^{}.").test(str) === true) {
|
|
15
|
+
return str.substring(2);
|
|
7
16
|
}
|
|
8
|
-
return
|
|
17
|
+
return str;
|
|
9
18
|
}
|
|
10
|
-
|
|
11
|
-
|
|
19
|
+
function correctMissingLastBrace(input) {
|
|
20
|
+
const initial = { s: "OUT", stack: [], line: 1, col: 0, edits: [] };
|
|
21
|
+
const scanned = Array.from(input).reduce((ps, ch, i) => {
|
|
22
|
+
var _a;
|
|
23
|
+
const updated = ch === "\n"
|
|
24
|
+
? Object.assign(Object.assign({}, ps), { line: ps.line + 1, col: 0 }) : Object.assign(Object.assign({}, ps), { col: ps.col + 1 });
|
|
25
|
+
const tok = categorize(ch);
|
|
26
|
+
const trans = (_a = table[updated.s]) === null || _a === void 0 ? void 0 : _a[tok];
|
|
27
|
+
return trans ? trans(updated, ch, i) : updated;
|
|
28
|
+
}, initial);
|
|
29
|
+
// Return original string if string is not closed (do not modify)
|
|
30
|
+
if (scanned.s !== "OUT")
|
|
31
|
+
return input;
|
|
32
|
+
// Insert closing braces at the end for remaining open braces (LIFO)
|
|
33
|
+
const withTail = scanned.stack.length === 0
|
|
34
|
+
? scanned
|
|
35
|
+
: (() => {
|
|
36
|
+
const closers = scanned.stack.slice().reverse().map(e => closeOf[e.type]).join("");
|
|
37
|
+
return Object.assign(Object.assign({}, scanned), { edits: [...scanned.edits, { op: "insert", index: input.length, text: closers }], stack: [] });
|
|
38
|
+
})();
|
|
39
|
+
return applyEditsImmutable(input, withTail.edits);
|
|
40
|
+
}
|
|
41
|
+
// Apply edits immutably
|
|
42
|
+
function applyEditsImmutable(src, edits) {
|
|
43
|
+
const sorted = [...edits].sort((a, b) => a.index - b.index);
|
|
44
|
+
const built = sorted.reduce((acc, e) => {
|
|
45
|
+
const prefix = src.slice(acc.cursor, e.index);
|
|
46
|
+
const acc1 = { out: acc.out + prefix, cursor: e.index };
|
|
47
|
+
return e.op === "delete"
|
|
48
|
+
? { out: acc1.out, cursor: acc1.cursor + 1 }
|
|
49
|
+
: e.op === "replace"
|
|
50
|
+
? { out: acc1.out + e.text, cursor: acc1.cursor + 1 }
|
|
51
|
+
: /* insert */ { out: acc1.out + e.text, cursor: acc1.cursor };
|
|
52
|
+
}, { out: "", cursor: 0 });
|
|
53
|
+
return built.out + src.slice(built.cursor);
|
|
54
|
+
}
|
|
55
|
+
const openOf = Object.freeze({ "}": "{", "]": "[" });
|
|
56
|
+
const closeOf = Object.freeze({ "{": "}", "[": "]" });
|
|
57
|
+
const categorize = (ch) => {
|
|
58
|
+
switch (ch) {
|
|
59
|
+
case '"': return "DQUOTE";
|
|
60
|
+
case "\\": return "BSLASH";
|
|
61
|
+
case "{": return "OCB";
|
|
62
|
+
case "[": return "OSB";
|
|
63
|
+
case "}": return "CCB";
|
|
64
|
+
case "]": return "CSB";
|
|
65
|
+
case "\n": return "NEWLINE";
|
|
66
|
+
default: return "CHAR";
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const push = (ps, type, index) => (Object.assign(Object.assign({}, ps), { stack: [...ps.stack, { type, index }] }));
|
|
70
|
+
const withEdit = (ps, edit) => (Object.assign(Object.assign({}, ps), { edits: [...ps.edits, edit] }));
|
|
71
|
+
const popOrFix = (ps, closer, idx) => (() => {
|
|
72
|
+
if (ps.stack.length === 0) {
|
|
73
|
+
// Extra closing brace → delete
|
|
74
|
+
return withEdit(ps, { op: "delete", index: idx });
|
|
75
|
+
}
|
|
76
|
+
const top = ps.stack[ps.stack.length - 1];
|
|
77
|
+
if (top !== undefined && top.type !== openOf[closer]) {
|
|
78
|
+
// Type mismatch → replace with expected value + pop
|
|
79
|
+
const expected = closeOf[top.type];
|
|
80
|
+
return withEdit(Object.assign(Object.assign({}, ps), { stack: ps.stack.slice(0, -1) }), { op: "replace", index: idx, text: expected });
|
|
81
|
+
}
|
|
82
|
+
// Normal matching → pop
|
|
83
|
+
return Object.assign(Object.assign({}, ps), { stack: ps.stack.slice(0, -1) });
|
|
84
|
+
})();
|
|
85
|
+
const table = {
|
|
86
|
+
OUT: {
|
|
87
|
+
DQUOTE: (ps) => (Object.assign(Object.assign({}, ps), { s: "IN" })),
|
|
88
|
+
OCB: (ps, _ch, i) => push(ps, "{", i),
|
|
89
|
+
OSB: (ps, _ch, i) => push(ps, "[", i),
|
|
90
|
+
CCB: (ps, _ch, i) => popOrFix(ps, "}", i),
|
|
91
|
+
CSB: (ps, _ch, i) => popOrFix(ps, "]", i),
|
|
92
|
+
},
|
|
93
|
+
IN: {
|
|
94
|
+
BSLASH: (ps) => (Object.assign(Object.assign({}, ps), { s: "ESC" })),
|
|
95
|
+
DQUOTE: (ps) => (Object.assign(Object.assign({}, ps), { s: "OUT" })),
|
|
96
|
+
},
|
|
97
|
+
ESC: {
|
|
98
|
+
DQUOTE: (ps) => (Object.assign(Object.assign({}, ps), { s: "IN" })),
|
|
99
|
+
BSLASH: (ps) => (Object.assign(Object.assign({}, ps), { s: "IN" })),
|
|
100
|
+
OCB: (ps) => (Object.assign(Object.assign({}, ps), { s: "IN" })),
|
|
101
|
+
OSB: (ps) => (Object.assign(Object.assign({}, ps), { s: "IN" })),
|
|
102
|
+
CCB: (ps) => (Object.assign(Object.assign({}, ps), { s: "IN" })),
|
|
103
|
+
CSB: (ps) => (Object.assign(Object.assign({}, ps), { s: "IN" })),
|
|
104
|
+
CHAR: (ps) => (Object.assign(Object.assign({}, ps), { s: "IN" })),
|
|
105
|
+
NEWLINE: (ps) => (Object.assign(Object.assign({}, ps), { s: "IN" })),
|
|
106
|
+
},
|
|
12
107
|
};
|
|
13
108
|
//# sourceMappingURL=JsonUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonUtil.js","sourceRoot":"","sources":["../../src/utils/JsonUtil.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"JsonUtil.js","sourceRoot":"","sources":["../../src/utils/JsonUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const JsonUtil_1 = require("./JsonUtil");
|
|
4
|
+
describe("JsonUtil", () => {
|
|
5
|
+
describe("parse", () => {
|
|
6
|
+
it("should handle string that starts with '{}'", () => {
|
|
7
|
+
const jsonString = '{}{"name": "test", "value": 42}';
|
|
8
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
9
|
+
expect(result).toEqual({ name: "test", value: 42 });
|
|
10
|
+
});
|
|
11
|
+
it("should handle array with '{}' prefix", () => {
|
|
12
|
+
const jsonString = '{}[1, 2, 3, "test"]';
|
|
13
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
14
|
+
expect(result).toEqual([1, 2, 3, "test"]);
|
|
15
|
+
});
|
|
16
|
+
it("should handle nested object with '{}' prefix", () => {
|
|
17
|
+
const jsonString = '{}{"user": {"id": 1, "name": "John"}}';
|
|
18
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
19
|
+
expect(result).toEqual({
|
|
20
|
+
user: { id: 1, name: "John" }
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
it("should handle primitive values with '{}' prefix", () => {
|
|
24
|
+
expect(JsonUtil_1.JsonUtil.parse('{}42')).toBe(42);
|
|
25
|
+
expect(JsonUtil_1.JsonUtil.parse('{}"hello"')).toBe("hello");
|
|
26
|
+
expect(JsonUtil_1.JsonUtil.parse('{}true')).toBe(true);
|
|
27
|
+
expect(JsonUtil_1.JsonUtil.parse('{}null')).toBeNull();
|
|
28
|
+
});
|
|
29
|
+
it("should not modify string that doesn't start with '{}'", () => {
|
|
30
|
+
const jsonString = '{"normal": "json"}';
|
|
31
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
32
|
+
expect(result).toEqual({ normal: "json" });
|
|
33
|
+
});
|
|
34
|
+
// 마지막 괄호 누락 보정 테스트 (예상 기능)
|
|
35
|
+
it("should handle missing closing brace in object", () => {
|
|
36
|
+
const jsonString = '{"name": "test", "value": 42';
|
|
37
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
38
|
+
expect(result).toEqual({ name: "test", value: 42 });
|
|
39
|
+
});
|
|
40
|
+
it("should handle missing closing bracket in array", () => {
|
|
41
|
+
const jsonString = '[1, 2, 3, "test"';
|
|
42
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
43
|
+
expect(result).toEqual([1, 2, 3, "test"]);
|
|
44
|
+
});
|
|
45
|
+
it("should handle nested object with missing closing brace", () => {
|
|
46
|
+
const jsonString = '{"user": {"id": 1, "name": "John"}';
|
|
47
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
48
|
+
expect(result).toEqual({
|
|
49
|
+
user: { id: 1, name: "John" }
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
it("should handle complex nested structure with missing closing brace", () => {
|
|
53
|
+
const jsonString = '{"users": [{"id": 1, "name": "John"}, {"id": 2, "name": "Jane"}], "count": 2';
|
|
54
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
55
|
+
expect(result).toEqual({
|
|
56
|
+
users: [
|
|
57
|
+
{ id: 1, name: "John" },
|
|
58
|
+
{ id: 2, name: "Jane" }
|
|
59
|
+
],
|
|
60
|
+
count: 2
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
it("should handle both '{}' prefix and missing closing brace", () => {
|
|
64
|
+
const jsonString = '{}{"name": "test", "value": 42';
|
|
65
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
66
|
+
expect(result).toEqual({ name: "test", value: 42 });
|
|
67
|
+
});
|
|
68
|
+
it("should handle both '{}' prefix and missing closing bracket in array", () => {
|
|
69
|
+
const jsonString = '{}[1, 2, 3, "test"';
|
|
70
|
+
const result = JsonUtil_1.JsonUtil.parse(jsonString);
|
|
71
|
+
expect(result).toEqual([1, 2, 3, "test"]);
|
|
72
|
+
});
|
|
73
|
+
// 에러 케이스 (보정할 수 없는 경우)
|
|
74
|
+
it("should throw error for completely invalid JSON", () => {
|
|
75
|
+
const invalidJson = '{invalid: json without quotes}';
|
|
76
|
+
expect(() => JsonUtil_1.JsonUtil.parse(invalidJson)).toThrow();
|
|
77
|
+
});
|
|
78
|
+
it("should throw error for empty string", () => {
|
|
79
|
+
expect(() => JsonUtil_1.JsonUtil.parse("")).toThrow();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=JsonUtil.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,UAAU,GAAG,iCAAiC,CAAC;YACrD,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,UAAU,GAAG,qBAAqB,CAAC;YACzC,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,UAAU,GAAG,uCAAuC,CAAC;YAC3D,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,UAAU,GAAG,oBAAoB,CAAC;YACxC,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,UAAU,GAAG,8BAA8B,CAAC;YAClD,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,UAAU,GAAG,kBAAkB,CAAC;YACtC,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,UAAU,GAAG,oCAAoC,CAAC;YACxD,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC3E,MAAM,UAAU,GAAG,8EAA8E,CAAC;YAClG,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,KAAK,EAAE;oBACL,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;oBACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;iBACxB;gBACD,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,UAAU,GAAG,gCAAgC,CAAC;YACpD,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC7E,MAAM,UAAU,GAAG,oBAAoB,CAAC;YACxC,MAAM,MAAM,GAAG,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,WAAW,GAAG,gCAAgC,CAAC;YAErD,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -159,11 +159,6 @@ describe("streamUtil", () => {
|
|
|
159
159
|
const emptyResult = yield StreamUtil_1.StreamUtil.reduce(emptyStream, (acc, cur) => acc + cur.toString(), { initial: "initial value" });
|
|
160
160
|
expect(emptyResult).toBe("initial value");
|
|
161
161
|
}));
|
|
162
|
-
it("should return null for empty stream without initial value", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
163
|
-
const emptyNoInitialStream = createEmptyStream();
|
|
164
|
-
const emptyNoInitialResult = yield StreamUtil_1.StreamUtil.reduce(emptyNoInitialStream, (acc, cur) => acc + cur, { initial: 0 });
|
|
165
|
-
expect(emptyNoInitialResult).toBeNull();
|
|
166
|
-
}));
|
|
167
162
|
it("should work with async generated stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
168
163
|
const stringStream = yield createDelayedNumberStream(1, 3, 10);
|
|
169
164
|
const stringResult = yield StreamUtil_1.StreamUtil.reduce(stringStream, (acc, cur) => acc + cur.toString(), { initial: "" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamUtil.spec.js","sourceRoot":"","sources":["../../src/utils/StreamUtil.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StreamUtil.spec.js","sourceRoot":"","sources":["../../src/utils/StreamUtil.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { JsonUtil } from "./JsonUtil";
|
|
2
|
+
|
|
3
|
+
describe("JsonUtil", () => {
|
|
4
|
+
describe("parse", () => {
|
|
5
|
+
it("should handle string that starts with '{}'", () => {
|
|
6
|
+
const jsonString = '{}{"name": "test", "value": 42}';
|
|
7
|
+
const result = JsonUtil.parse(jsonString);
|
|
8
|
+
|
|
9
|
+
expect(result).toEqual({ name: "test", value: 42 });
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it("should handle array with '{}' prefix", () => {
|
|
13
|
+
const jsonString = '{}[1, 2, 3, "test"]';
|
|
14
|
+
const result = JsonUtil.parse(jsonString);
|
|
15
|
+
|
|
16
|
+
expect(result).toEqual([1, 2, 3, "test"]);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("should handle nested object with '{}' prefix", () => {
|
|
20
|
+
const jsonString = '{}{"user": {"id": 1, "name": "John"}}';
|
|
21
|
+
const result = JsonUtil.parse(jsonString);
|
|
22
|
+
|
|
23
|
+
expect(result).toEqual({
|
|
24
|
+
user: { id: 1, name: "John" }
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it("should handle primitive values with '{}' prefix", () => {
|
|
29
|
+
expect(JsonUtil.parse('{}42')).toBe(42);
|
|
30
|
+
expect(JsonUtil.parse('{}"hello"')).toBe("hello");
|
|
31
|
+
expect(JsonUtil.parse('{}true')).toBe(true);
|
|
32
|
+
expect(JsonUtil.parse('{}null')).toBeNull();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("should not modify string that doesn't start with '{}'", () => {
|
|
36
|
+
const jsonString = '{"normal": "json"}';
|
|
37
|
+
const result = JsonUtil.parse(jsonString);
|
|
38
|
+
|
|
39
|
+
expect(result).toEqual({ normal: "json" });
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// 마지막 괄호 누락 보정 테스트 (예상 기능)
|
|
43
|
+
it("should handle missing closing brace in object", () => {
|
|
44
|
+
const jsonString = '{"name": "test", "value": 42';
|
|
45
|
+
const result = JsonUtil.parse(jsonString);
|
|
46
|
+
|
|
47
|
+
expect(result).toEqual({ name: "test", value: 42 });
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("should handle missing closing bracket in array", () => {
|
|
51
|
+
const jsonString = '[1, 2, 3, "test"';
|
|
52
|
+
const result = JsonUtil.parse(jsonString);
|
|
53
|
+
|
|
54
|
+
expect(result).toEqual([1, 2, 3, "test"]);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it("should handle nested object with missing closing brace", () => {
|
|
58
|
+
const jsonString = '{"user": {"id": 1, "name": "John"}';
|
|
59
|
+
const result = JsonUtil.parse(jsonString);
|
|
60
|
+
|
|
61
|
+
expect(result).toEqual({
|
|
62
|
+
user: { id: 1, name: "John" }
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it("should handle complex nested structure with missing closing brace", () => {
|
|
67
|
+
const jsonString = '{"users": [{"id": 1, "name": "John"}, {"id": 2, "name": "Jane"}], "count": 2';
|
|
68
|
+
const result = JsonUtil.parse(jsonString);
|
|
69
|
+
|
|
70
|
+
expect(result).toEqual({
|
|
71
|
+
users: [
|
|
72
|
+
{ id: 1, name: "John" },
|
|
73
|
+
{ id: 2, name: "Jane" }
|
|
74
|
+
],
|
|
75
|
+
count: 2
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("should handle both '{}' prefix and missing closing brace", () => {
|
|
80
|
+
const jsonString = '{}{"name": "test", "value": 42';
|
|
81
|
+
const result = JsonUtil.parse(jsonString);
|
|
82
|
+
|
|
83
|
+
expect(result).toEqual({ name: "test", value: 42 });
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("should handle both '{}' prefix and missing closing bracket in array", () => {
|
|
87
|
+
const jsonString = '{}[1, 2, 3, "test"';
|
|
88
|
+
const result = JsonUtil.parse(jsonString);
|
|
89
|
+
|
|
90
|
+
expect(result).toEqual([1, 2, 3, "test"]);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// 에러 케이스 (보정할 수 없는 경우)
|
|
94
|
+
it("should throw error for completely invalid JSON", () => {
|
|
95
|
+
const invalidJson = '{invalid: json without quotes}';
|
|
96
|
+
|
|
97
|
+
expect(() => JsonUtil.parse(invalidJson)).toThrow();
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("should throw error for empty string", () => {
|
|
101
|
+
expect(() => JsonUtil.parse("")).toThrow();
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
package/src/utils/JsonUtil.ts
CHANGED
|
@@ -1,10 +1,150 @@
|
|
|
1
|
+
export const JsonUtil = {
|
|
2
|
+
parse,
|
|
3
|
+
};
|
|
4
|
+
|
|
1
5
|
function parse(str: string) {
|
|
2
|
-
|
|
3
|
-
|
|
6
|
+
const corrected = pipe(stripFirstBrace, correctMissingLastBrace)(str);
|
|
7
|
+
return JSON.parse(corrected);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const pipe = (...fns: ((str: string) => string)[]) => (str: string) => fns.reduce((acc, fn) => fn(acc), str);
|
|
11
|
+
|
|
12
|
+
function stripFirstBrace(str: string) {
|
|
13
|
+
if(RegExp("^{}.").test(str) === true) {
|
|
14
|
+
return str.substring(2);
|
|
4
15
|
}
|
|
5
|
-
return
|
|
16
|
+
return str;
|
|
6
17
|
}
|
|
7
18
|
|
|
8
|
-
export
|
|
9
|
-
|
|
19
|
+
export function correctMissingLastBrace(input: string): string {
|
|
20
|
+
const initial: ParseState = { s: "OUT", stack: [], line: 1, col: 0, edits: [] };
|
|
21
|
+
|
|
22
|
+
const scanned = Array.from(input).reduce<ParseState>((ps, ch, i) => {
|
|
23
|
+
const updated = ch === "\n"
|
|
24
|
+
? { ...ps, line: ps.line + 1, col: 0 }
|
|
25
|
+
: { ...ps, col: ps.col + 1 };
|
|
26
|
+
|
|
27
|
+
const tok = categorize(ch);
|
|
28
|
+
const trans = (table[updated.s] as Record<Token, Transition>)?.[tok];
|
|
29
|
+
return trans ? trans(updated, ch, i) : updated;
|
|
30
|
+
}, initial);
|
|
31
|
+
|
|
32
|
+
// Return original string if string is not closed (do not modify)
|
|
33
|
+
if (scanned.s !== "OUT") return input;
|
|
34
|
+
|
|
35
|
+
// Insert closing braces at the end for remaining open braces (LIFO)
|
|
36
|
+
const withTail = scanned.stack.length === 0
|
|
37
|
+
? scanned
|
|
38
|
+
: ((): ParseState => {
|
|
39
|
+
const closers = scanned.stack.slice().reverse().map(e => closeOf[e.type]).join("");
|
|
40
|
+
return {
|
|
41
|
+
...scanned,
|
|
42
|
+
edits: [...scanned.edits, { op: "insert", index: input.length, text: closers }],
|
|
43
|
+
stack: [],
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
|
|
47
|
+
return applyEditsImmutable(input, withTail.edits);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Apply edits immutably
|
|
51
|
+
function applyEditsImmutable(src: string, edits: ReadonlyArray<Edit>): string {
|
|
52
|
+
const sorted = [...edits].sort((a, b) => a.index - b.index);
|
|
53
|
+
|
|
54
|
+
type Build = { out: string; cursor: number };
|
|
55
|
+
const built = sorted.reduce<Build>((acc, e) => {
|
|
56
|
+
const prefix = src.slice(acc.cursor, e.index);
|
|
57
|
+
const acc1 = { out: acc.out + prefix, cursor: e.index };
|
|
58
|
+
return e.op === "delete"
|
|
59
|
+
? { out: acc1.out, cursor: acc1.cursor + 1 }
|
|
60
|
+
: e.op === "replace"
|
|
61
|
+
? { out: acc1.out + e.text, cursor: acc1.cursor + 1 }
|
|
62
|
+
: /* insert */ { out: acc1.out + e.text, cursor: acc1.cursor };
|
|
63
|
+
}, { out: "", cursor: 0 });
|
|
64
|
+
|
|
65
|
+
return built.out + src.slice(built.cursor);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const openOf = Object.freeze<Readonly<Record<BraceClose, BraceOpen>>>({ "}": "{", "]": "[" });
|
|
69
|
+
const closeOf = Object.freeze<Readonly<Record<BraceOpen, BraceClose>>>({ "{": "}", "[": "]" });
|
|
70
|
+
|
|
71
|
+
const categorize = (ch: string): Token => {
|
|
72
|
+
switch (ch) {
|
|
73
|
+
case '"': return "DQUOTE";
|
|
74
|
+
case "\\": return "BSLASH";
|
|
75
|
+
case "{": return "OCB";
|
|
76
|
+
case "[": return "OSB";
|
|
77
|
+
case "}": return "CCB";
|
|
78
|
+
case "]": return "CSB";
|
|
79
|
+
case "\n": return "NEWLINE";
|
|
80
|
+
default: return "CHAR";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
type Transition = (ps: ParseState, ch: string, i: number) => ParseState;
|
|
85
|
+
type Table = Readonly<Partial<Record<StateName, Partial<Record<Token, Transition>>>>>;
|
|
86
|
+
|
|
87
|
+
const push = (ps: ParseState, type: BraceOpen, index: number): ParseState =>
|
|
88
|
+
({ ...ps, stack: [...ps.stack, { type, index }] });
|
|
89
|
+
|
|
90
|
+
const withEdit = (ps: ParseState, edit: Edit): ParseState =>
|
|
91
|
+
({ ...ps, edits: [...ps.edits, edit] });
|
|
92
|
+
|
|
93
|
+
const popOrFix = (ps: ParseState, closer: BraceClose, idx: number): ParseState =>
|
|
94
|
+
((): ParseState => {
|
|
95
|
+
if (ps.stack.length === 0) {
|
|
96
|
+
// Extra closing brace → delete
|
|
97
|
+
return withEdit(ps, { op: "delete", index: idx });
|
|
98
|
+
}
|
|
99
|
+
const top = ps.stack[ps.stack.length - 1];
|
|
100
|
+
if (top !== undefined && top.type !== openOf[closer]) {
|
|
101
|
+
// Type mismatch → replace with expected value + pop
|
|
102
|
+
const expected = closeOf[top.type];
|
|
103
|
+
return withEdit({ ...ps, stack: ps.stack.slice(0, -1) }, { op: "replace", index: idx, text: expected });
|
|
104
|
+
}
|
|
105
|
+
// Normal matching → pop
|
|
106
|
+
return { ...ps, stack: ps.stack.slice(0, -1) };
|
|
107
|
+
})();
|
|
108
|
+
|
|
109
|
+
const table: Table = {
|
|
110
|
+
OUT: {
|
|
111
|
+
DQUOTE: (ps) => ({ ...ps, s: "IN" }),
|
|
112
|
+
OCB: (ps, _ch, i) => push(ps, "{", i),
|
|
113
|
+
OSB: (ps, _ch, i) => push(ps, "[", i),
|
|
114
|
+
CCB: (ps, _ch, i) => popOrFix(ps, "}", i),
|
|
115
|
+
CSB: (ps, _ch, i) => popOrFix(ps, "]", i),
|
|
116
|
+
},
|
|
117
|
+
IN: {
|
|
118
|
+
BSLASH: (ps) => ({ ...ps, s: "ESC" }),
|
|
119
|
+
DQUOTE: (ps) => ({ ...ps, s: "OUT" }),
|
|
120
|
+
},
|
|
121
|
+
ESC: {
|
|
122
|
+
DQUOTE: (ps) => ({ ...ps, s: "IN" }),
|
|
123
|
+
BSLASH: (ps) => ({ ...ps, s: "IN" }),
|
|
124
|
+
OCB: (ps) => ({ ...ps, s: "IN" }),
|
|
125
|
+
OSB: (ps) => ({ ...ps, s: "IN" }),
|
|
126
|
+
CCB: (ps) => ({ ...ps, s: "IN" }),
|
|
127
|
+
CSB: (ps) => ({ ...ps, s: "IN" }),
|
|
128
|
+
CHAR: (ps) => ({ ...ps, s: "IN" }),
|
|
129
|
+
NEWLINE:(ps) => ({ ...ps, s: "IN" }),
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
type StateName = "OUT" | "IN" | "ESC";
|
|
134
|
+
type BraceOpen = "{" | "[";
|
|
135
|
+
type BraceClose = "}" | "]";
|
|
136
|
+
type Token = "DQUOTE" | "BSLASH" | "OCB" | "OSB" | "CCB" | "CSB" | "NEWLINE" | "CHAR";
|
|
137
|
+
|
|
138
|
+
type StackEntry = { type: BraceOpen; index: number };
|
|
139
|
+
type Edit =
|
|
140
|
+
| { op: "delete"; index: number }
|
|
141
|
+
| { op: "replace"; index: number; text: string }
|
|
142
|
+
| { op: "insert"; index: number; text: string };
|
|
143
|
+
|
|
144
|
+
type ParseState = {
|
|
145
|
+
s: StateName;
|
|
146
|
+
stack: ReadonlyArray<StackEntry>;
|
|
147
|
+
line: number;
|
|
148
|
+
col: number;
|
|
149
|
+
edits: ReadonlyArray<Edit>;
|
|
10
150
|
};
|
|
@@ -188,17 +188,6 @@ describe("streamUtil", () => {
|
|
|
188
188
|
expect(emptyResult).toBe("initial value");
|
|
189
189
|
});
|
|
190
190
|
|
|
191
|
-
it("should return null for empty stream without initial value", async () => {
|
|
192
|
-
const emptyNoInitialStream = createEmptyStream<number>();
|
|
193
|
-
const emptyNoInitialResult = await StreamUtil.reduce<number>(
|
|
194
|
-
emptyNoInitialStream,
|
|
195
|
-
(acc, cur) => acc + cur,
|
|
196
|
-
{ initial: 0 },
|
|
197
|
-
);
|
|
198
|
-
|
|
199
|
-
expect(emptyNoInitialResult).toBeNull();
|
|
200
|
-
});
|
|
201
|
-
|
|
202
191
|
it("should work with async generated stream", async () => {
|
|
203
192
|
const stringStream = await createDelayedNumberStream(1, 3, 10);
|
|
204
193
|
const stringResult = await StreamUtil.reduce<number, string>(
|