@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.
@@ -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;IAEtB;;;;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;;;;;;OAMG;IACH,SAAS,CACP,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,oBAAoB,GAC7B,oBAAoB,CAAC;CACzB"}
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;IAkEX,WAAW;IAcX,mBAAmB;IAanB,cAAc;IAQd,IAAI;CAGL"}
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
- stringAcc += char;
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":"AAAA,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;;;;;;OAMG;IACH,SAAS,CACP,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAyB,GACjC,oBAAoB;CAkBxB"}
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: true,
36
- data,
37
- data_type: type,
38
- message: ibiz.i18n.t('runtime.utils.jsonUtil.parseSuccess'),
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.45",
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": "c0e324a806e6c607e93ad7f4d949aad50767a00f"
71
+ "gitHead": "b32465b9a6c8db04d5a05f30dabd1526f852569c"
72
72
  }