@lark-apaas/nestjs-capability 0.1.8 → 0.1.10

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.cjs CHANGED
@@ -582,6 +582,100 @@ async function migrationAdaptor(promise) {
582
582
  }
583
583
  __name(migrationAdaptor, "migrationAdaptor");
584
584
 
585
+ // src/utils/plugin-error-format.ts
586
+ var PLUGIN_ERROR_CODES = /* @__PURE__ */ new Set([
587
+ "INVALID_INPUT",
588
+ "EXECUTION_ERROR",
589
+ "INVALID_OUTPUT",
590
+ "INVALID_CONFIG",
591
+ "ACTION_NOT_FOUND"
592
+ ]);
593
+ function isPluginError(error) {
594
+ if (!error || typeof error !== "object") return false;
595
+ const code = error.code;
596
+ return typeof code === "string" && PLUGIN_ERROR_CODES.has(code);
597
+ }
598
+ __name(isPluginError, "isPluginError");
599
+ function formatPluginError(error, displayName) {
600
+ if (!isPluginError(error)) return null;
601
+ const err = error;
602
+ const label = displayName ? `\u300C${displayName}\u300D` : "";
603
+ switch (err.code) {
604
+ case "INVALID_INPUT":
605
+ return `${label}\u63D2\u4EF6\u8F93\u5165\u6821\u9A8C\u5931\u8D25: ${formatZodIssuesChinese(err.details)}`;
606
+ case "INVALID_OUTPUT":
607
+ return `${label}\u63D2\u4EF6\u8F93\u51FA\u6821\u9A8C\u5931\u8D25: ${formatZodIssuesChinese(err.details)}`;
608
+ case "INVALID_CONFIG":
609
+ return `${label}\u63D2\u4EF6\u914D\u7F6E\u6821\u9A8C\u5931\u8D25: ${formatZodIssuesChinese(err.details)}`;
610
+ case "ACTION_NOT_FOUND":
611
+ return `${label}\u63D2\u4EF6\u64CD\u4F5C\u4E0D\u5B58\u5728`;
612
+ case "EXECUTION_ERROR": {
613
+ const inner = err.originalError instanceof Error ? err.originalError.message : "";
614
+ return inner ? `${label}\u63D2\u4EF6\u6267\u884C\u5931\u8D25: ${inner}` : `${label}\u63D2\u4EF6\u6267\u884C\u5931\u8D25`;
615
+ }
616
+ default:
617
+ return `${label}\u63D2\u4EF6\u6267\u884C\u5931\u8D25`;
618
+ }
619
+ }
620
+ __name(formatPluginError, "formatPluginError");
621
+ function formatZodIssuesChinese(details) {
622
+ if (!Array.isArray(details) || details.length === 0) return "\u53C2\u6570\u683C\u5F0F\u6821\u9A8C\u51FA\u9519";
623
+ return details.map(translateZodIssue).join("\uFF1B");
624
+ }
625
+ __name(formatZodIssuesChinese, "formatZodIssuesChinese");
626
+ function translateZodIssue(issue) {
627
+ const field = issue.path?.length > 0 ? `\u300C${issue.path.join(".")}\u300D` : "";
628
+ switch (issue.code) {
629
+ case "invalid_type": {
630
+ const received = issue.received;
631
+ if (received === "undefined" || received === "null") {
632
+ return `${field}\u5B57\u6BB5\u662F\u5FC5\u586B\u7684`;
633
+ }
634
+ return `${field}\u5B57\u6BB5\u7C7B\u578B\u9519\u8BEF\uFF0C\u671F\u671B${translateType(issue.expected)}`;
635
+ }
636
+ case "too_small": {
637
+ if (issue.type === "string") {
638
+ if (issue.minimum === 1) return `${field}\u5B57\u6BB5\u4E0D\u80FD\u4E3A\u7A7A`;
639
+ return `${field}\u5B57\u6BB5\u957F\u5EA6\u4E0D\u80FD\u5C11\u4E8E ${issue.minimum} \u4E2A\u5B57\u7B26`;
640
+ }
641
+ if (issue.type === "number") return `${field}\u5B57\u6BB5\u4E0D\u80FD\u5C0F\u4E8E ${issue.minimum}`;
642
+ if (issue.type === "array") return `${field}\u5B57\u6BB5\u81F3\u5C11\u9700\u8981 ${issue.minimum} \u9879`;
643
+ return `${field}\u5B57\u6BB5\u503C\u8FC7\u5C0F`;
644
+ }
645
+ case "too_big": {
646
+ if (issue.type === "string") return `${field}\u5B57\u6BB5\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7 ${issue.maximum} \u4E2A\u5B57\u7B26`;
647
+ if (issue.type === "number") return `${field}\u5B57\u6BB5\u4E0D\u80FD\u5927\u4E8E ${issue.maximum}`;
648
+ if (issue.type === "array") return `${field}\u5B57\u6BB5\u6700\u591A ${issue.maximum} \u9879`;
649
+ return `${field}\u5B57\u6BB5\u503C\u8FC7\u5927`;
650
+ }
651
+ case "invalid_string": {
652
+ if (issue.validation === "email") return `${field}\u5B57\u6BB5\u4E0D\u662F\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740`;
653
+ if (issue.validation === "url") return `${field}\u5B57\u6BB5\u4E0D\u662F\u6709\u6548\u7684 URL`;
654
+ if (issue.validation === "regex") return `${field}\u5B57\u6BB5\u683C\u5F0F\u4E0D\u6B63\u786E`;
655
+ return `${field}\u5B57\u6BB5\u683C\u5F0F\u6821\u9A8C\u51FA\u9519`;
656
+ }
657
+ case "invalid_enum_value":
658
+ return `${field}\u5B57\u6BB5\u503C\u4E0D\u5728\u5141\u8BB8\u7684\u8303\u56F4\u5185`;
659
+ case "unrecognized_keys":
660
+ return `\u5305\u542B\u672A\u77E5\u5B57\u6BB5: ${issue.keys?.join(", ")}`;
661
+ default:
662
+ return field ? `${field}\u5B57\u6BB5\u683C\u5F0F\u6821\u9A8C\u51FA\u9519` : "\u8F93\u5165\u683C\u5F0F\u6821\u9A8C\u51FA\u9519";
663
+ }
664
+ }
665
+ __name(translateZodIssue, "translateZodIssue");
666
+ function translateType(type) {
667
+ const map = {
668
+ string: "\u6587\u672C",
669
+ number: "\u6570\u5B57",
670
+ boolean: "\u5E03\u5C14\u503C",
671
+ array: "\u6570\u7EC4",
672
+ object: "\u5BF9\u8C61",
673
+ integer: "\u6574\u6570"
674
+ };
675
+ return map[type] || type;
676
+ }
677
+ __name(translateType, "translateType");
678
+
585
679
  // src/services/capability.service.ts
586
680
  function _ts_decorate4(decorators, target, key, desc) {
587
681
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -917,6 +1011,11 @@ var CapabilityService = class _CapabilityService {
917
1011
  });
918
1012
  const errorCode = String(error?.code ?? "EXECUTION_ERROR");
919
1013
  this.reportCallEvent(config.pluginKey, false, durationMs, isStream, contextOverride, errorCode);
1014
+ const displayName = this.pluginLoaderService.getManifest(config.pluginKey)?.displayName;
1015
+ const formattedMessage = formatPluginError(error, displayName);
1016
+ if (formattedMessage && error instanceof Error) {
1017
+ error.message = formattedMessage;
1018
+ }
920
1019
  throw error;
921
1020
  }
922
1021
  }
@@ -972,6 +1071,11 @@ var CapabilityService = class _CapabilityService {
972
1071
  });
973
1072
  const errorCode = String(error?.code ?? "EXECUTION_ERROR");
974
1073
  this.reportCallEvent(config.pluginKey, false, durationMs, true, contextOverride, errorCode);
1074
+ const displayName = this.pluginLoaderService.getManifest(config.pluginKey)?.displayName;
1075
+ const formattedMessage = formatPluginError(error, displayName);
1076
+ if (formattedMessage && error instanceof Error) {
1077
+ error.message = formattedMessage;
1078
+ }
975
1079
  throw error;
976
1080
  }
977
1081
  }
@@ -1066,7 +1170,7 @@ var CapabilityService = class _CapabilityService {
1066
1170
  this.reportCallEvent(config.pluginKey, false, durationMs, true, contextOverride, errorCode);
1067
1171
  yield {
1068
1172
  type: "error",
1069
- error: this.extractErrorInfo(error)
1173
+ error: this.extractErrorInfo(error, config.pluginKey)
1070
1174
  };
1071
1175
  }
1072
1176
  }
@@ -1089,8 +1193,10 @@ var CapabilityService = class _CapabilityService {
1089
1193
  /**
1090
1194
  * 从错误对象提取错误信息
1091
1195
  * 支持 PluginError 和 RateLimitError
1196
+ * @param error - 捕获到的错误
1197
+ * @param pluginKey - 插件 key,用于获取 displayName 格式化 PluginError 消息
1092
1198
  */
1093
- extractErrorInfo(error) {
1199
+ extractErrorInfo(error, pluginKey) {
1094
1200
  const err = error;
1095
1201
  const code = err?.code ?? "EXECUTION_ERROR";
1096
1202
  const message = err instanceof Error ? err.message : String(err);
@@ -1102,6 +1208,16 @@ var CapabilityService = class _CapabilityService {
1102
1208
  rateLimitMessage: err.rateLimitMessage
1103
1209
  };
1104
1210
  }
1211
+ if (pluginKey) {
1212
+ const displayName = this.pluginLoaderService.getManifest(pluginKey)?.displayName;
1213
+ const formattedMessage = formatPluginError(error, displayName);
1214
+ if (formattedMessage) {
1215
+ return {
1216
+ code,
1217
+ message: formattedMessage
1218
+ };
1219
+ }
1220
+ }
1105
1221
  return {
1106
1222
  code,
1107
1223
  message