@ibiz-template/runtime 0.7.41-alpha.45 → 0.7.41-alpha.47
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/dist/index.esm.js +72 -11
- package/dist/index.system.min.js +1 -1
- package/out/interface/api/util/i-api-json-util.d.ts +16 -2
- package/out/interface/api/util/i-api-json-util.d.ts.map +1 -1
- package/out/utils/json-util/JsonParser.d.ts.map +1 -1
- package/out/utils/json-util/JsonParser.js +27 -1
- package/out/utils/json-util/json-util.d.ts +12 -0
- package/out/utils/json-util/json-util.d.ts.map +1 -1
- package/out/utils/json-util/json-util.js +46 -5
- package/package.json +2 -2
|
@@ -33,10 +33,10 @@ export interface IApiJsonRepairResult {
|
|
|
33
33
|
success: boolean;
|
|
34
34
|
/**
|
|
35
35
|
* @description json数据
|
|
36
|
-
* @type {(IData | IData[])}
|
|
36
|
+
* @type {(IData | IData[] | undefined)}
|
|
37
37
|
* @memberof IApiJsonRepairResult
|
|
38
38
|
*/
|
|
39
|
-
data: IData | IData[];
|
|
39
|
+
data: IData | IData[] | undefined;
|
|
40
40
|
/**
|
|
41
41
|
* @description 数据类型
|
|
42
42
|
* @type {('jsonobject' | 'jsonarray' | 'unknown')}
|
|
@@ -70,6 +70,20 @@ export interface IApiJsonUtil {
|
|
|
70
70
|
* @memberof IApiJsonUtil
|
|
71
71
|
*/
|
|
72
72
|
loads(value: string, options?: IApiJsonRepairOption): IData | IData[];
|
|
73
|
+
/**
|
|
74
|
+
* @description 判断是否为json对象
|
|
75
|
+
* @param {*} value
|
|
76
|
+
* @returns {boolean}
|
|
77
|
+
* @memberof IApiJsonUtil
|
|
78
|
+
*/
|
|
79
|
+
isJsonObject(value: unknown): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* @description 检测是否为json数组
|
|
82
|
+
* @param {*} value
|
|
83
|
+
* @returns {boolean}
|
|
84
|
+
* @memberof IApiJsonUtil
|
|
85
|
+
*/
|
|
86
|
+
isJsonArray(value: unknown): boolean;
|
|
73
87
|
/**
|
|
74
88
|
* @description 解析字符串中的json数据,用于获取大语言模型中的json数据
|
|
75
89
|
* @param {string} value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-api-json-util.d.ts","sourceRoot":"","sources":["../../../../src/interface/api/util/i-api-json-util.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"i-api-json-util.d.ts","sourceRoot":"","sources":["../../../../src/interface/api/util/i-api-json-util.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC;IAElC;;;;OAIG;IACH,SAAS,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;IAElD;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,UAAU,CACR,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,oBAAoB,GAC7B,KAAK,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;IAE5B;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;IAEtE;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAEtC;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAErC;;;;;;OAMG;IACH,SAAS,CACP,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,oBAAoB,GAC7B,oBAAoB,CAAC;CACzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonParser.d.ts","sourceRoot":"","sources":["../../../src/utils/json-util/JsonParser.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,WAAW,EAAE,MAAM,eAAe,CAAC;AAK3D,qBAAa,UAAU;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO,EAAE,WAAW,CAAC;IAErB,OAAO,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,GAAG,EAAE,CAAC;gBAEF,OAAO,SAAK,EAAE,OAAO,UAAQ;IAQzC,GAAG,CAAC,IAAI,EAAE,MAAM;IAShB,KAAK;IAkCL,UAAU,IAAI,GAAG;IAgBjB,WAAW;IAiDX,UAAU;IA8BV,WAAW;
|
|
1
|
+
{"version":3,"file":"JsonParser.d.ts","sourceRoot":"","sources":["../../../src/utils/json-util/JsonParser.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,WAAW,EAAE,MAAM,eAAe,CAAC;AAK3D,qBAAa,UAAU;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO,EAAE,WAAW,CAAC;IAErB,OAAO,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,GAAG,EAAE,CAAC;gBAEF,OAAO,SAAK,EAAE,OAAO,UAAQ;IAQzC,GAAG,CAAC,IAAI,EAAE,MAAM;IAShB,KAAK;IAkCL,UAAU,IAAI,GAAG;IAgBjB,WAAW;IAiDX,UAAU;IA8BV,WAAW;IA0FX,WAAW;IAcX,mBAAmB;IAanB,cAAc;IAQd,IAAI;CAGL"}
|
|
@@ -148,7 +148,33 @@ export class JsonParser {
|
|
|
148
148
|
this.index++; // skip closing quote
|
|
149
149
|
break;
|
|
150
150
|
}
|
|
151
|
-
|
|
151
|
+
// fix: 修复字符串拼接\n、\r、\t、\\特殊字符语义丢失问题
|
|
152
|
+
if (char === '\\') {
|
|
153
|
+
const next = this.jsonStr[this.index + 1];
|
|
154
|
+
switch (next) {
|
|
155
|
+
case 'n':
|
|
156
|
+
stringAcc += '\n';
|
|
157
|
+
this.index += 2; // 跳过 \ 和 n
|
|
158
|
+
continue;
|
|
159
|
+
case 'r':
|
|
160
|
+
stringAcc += '\r';
|
|
161
|
+
this.index += 2;
|
|
162
|
+
continue;
|
|
163
|
+
case 't':
|
|
164
|
+
stringAcc += '\t';
|
|
165
|
+
this.index += 2;
|
|
166
|
+
continue;
|
|
167
|
+
case '\\':
|
|
168
|
+
stringAcc += '\\';
|
|
169
|
+
this.index += 2;
|
|
170
|
+
continue;
|
|
171
|
+
default:
|
|
172
|
+
stringAcc += char;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
stringAcc += char;
|
|
177
|
+
}
|
|
152
178
|
this.index++;
|
|
153
179
|
}
|
|
154
180
|
}
|
|
@@ -16,6 +16,18 @@ export declare class JsonUtil implements IApiJsonUtil {
|
|
|
16
16
|
* @memberof JsonUtil
|
|
17
17
|
*/
|
|
18
18
|
loads(value: string, options?: IApiJsonRepairOption): IData | IData[];
|
|
19
|
+
/**
|
|
20
|
+
* @description 判断给定的值是否为 JSON 对象
|
|
21
|
+
* @param value
|
|
22
|
+
* @returns boolean
|
|
23
|
+
*/
|
|
24
|
+
isJsonObject(value: unknown): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* @description 判断给定的值是否为 JSON 数组
|
|
27
|
+
* @param value
|
|
28
|
+
* @returns boolean
|
|
29
|
+
*/
|
|
30
|
+
isJsonArray(value: unknown): boolean;
|
|
19
31
|
/**
|
|
20
32
|
* @description json修复,用于提取大语言模型中的json数据
|
|
21
33
|
* @param {string} value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-util.d.ts","sourceRoot":"","sources":["../../../src/utils/json-util/json-util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json-util.d.ts","sourceRoot":"","sources":["../../../src/utils/json-util/json-util.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACb,MAAM,iBAAiB,CAAC;AAGzB,qBAAa,QAAS,YAAW,YAAY;IAC3C;;;;;;OAMG;IACH,UAAU,CACR,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAyB,GACjC,KAAK,GAAG,KAAK,EAAE,GAAG,MAAM;IAI3B;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,KAAK,GAAG,KAAK,EAAE;IAIzE;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAYrC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAWpC;;;;;;OAMG;IACH,SAAS,CACP,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAyB,GACjC,oBAAoB;CA0BxB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isNil } from 'ramda';
|
|
1
2
|
import { loads, repairJson } from './json-repair';
|
|
2
3
|
export class JsonUtil {
|
|
3
4
|
/**
|
|
@@ -20,6 +21,37 @@ export class JsonUtil {
|
|
|
20
21
|
loads(value, options = {}) {
|
|
21
22
|
return loads(value, options);
|
|
22
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* @description 判断给定的值是否为 JSON 对象
|
|
26
|
+
* @param value
|
|
27
|
+
* @returns boolean
|
|
28
|
+
*/
|
|
29
|
+
isJsonObject(value) {
|
|
30
|
+
// 必须是 object 类型,不为 null,并且不是数组
|
|
31
|
+
if (typeof value !== 'object' || isNil(value) || Array.isArray(value)) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
// 排除常见的非纯对象类型,如 Date, RegExp, Function, DOM Element 等
|
|
35
|
+
if (value.constructor && value.constructor !== Object) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @description 判断给定的值是否为 JSON 数组
|
|
42
|
+
* @param value
|
|
43
|
+
* @returns boolean
|
|
44
|
+
*/
|
|
45
|
+
isJsonArray(value) {
|
|
46
|
+
// 1. 检查是否为 null 或 undefined
|
|
47
|
+
if (isNil(value)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
if (Array.isArray(value)) {
|
|
51
|
+
return value.every(item => this.isJsonObject(item));
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
23
55
|
/**
|
|
24
56
|
* @description json修复,用于提取大语言模型中的json数据
|
|
25
57
|
* @param {string} value
|
|
@@ -30,17 +62,26 @@ export class JsonUtil {
|
|
|
30
62
|
parseJson(value, options = {}) {
|
|
31
63
|
const data = loads(value, options);
|
|
32
64
|
if (data) {
|
|
65
|
+
let success = true;
|
|
33
66
|
const type = Array.isArray(data) ? 'jsonarray' : 'jsonobject';
|
|
67
|
+
if (type === 'jsonobject') {
|
|
68
|
+
success = this.isJsonObject(data);
|
|
69
|
+
}
|
|
70
|
+
else if (type === 'jsonarray') {
|
|
71
|
+
success = this.isJsonArray(data);
|
|
72
|
+
}
|
|
34
73
|
return {
|
|
35
|
-
success
|
|
36
|
-
data,
|
|
37
|
-
data_type: type,
|
|
38
|
-
message:
|
|
74
|
+
success,
|
|
75
|
+
data: success ? data : undefined,
|
|
76
|
+
data_type: success ? type : 'unknown',
|
|
77
|
+
message: success
|
|
78
|
+
? ibiz.i18n.t('runtime.utils.jsonUtil.parseSuccess')
|
|
79
|
+
: ibiz.i18n.t('runtime.utils.jsonUtil.parseError'),
|
|
39
80
|
};
|
|
40
81
|
}
|
|
41
82
|
return {
|
|
42
83
|
success: false,
|
|
43
|
-
data:
|
|
84
|
+
data: undefined,
|
|
44
85
|
data_type: 'unknown',
|
|
45
86
|
message: ibiz.i18n.t('runtime.utils.jsonUtil.parseError'),
|
|
46
87
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/runtime",
|
|
3
|
-
"version": "0.7.41-alpha.
|
|
3
|
+
"version": "0.7.41-alpha.47",
|
|
4
4
|
"description": "运行时逻辑库",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "out/index.js",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"qx-util": "^0.4.8",
|
|
69
69
|
"ramda": "^0.29.0"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "b32465b9a6c8db04d5a05f30dabd1526f852569c"
|
|
72
72
|
}
|