@lark-apaas/nestjs-capability 0.1.9 → 0.1.11
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 +118 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +118 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -331,6 +331,7 @@ declare class TemplateEngineService {
|
|
|
331
331
|
interface PluginManifest {
|
|
332
332
|
name: string;
|
|
333
333
|
version?: string;
|
|
334
|
+
displayName?: string;
|
|
334
335
|
form?: {
|
|
335
336
|
refType?: 'config' | 'action';
|
|
336
337
|
schema?: unknown;
|
|
@@ -527,6 +528,8 @@ declare class CapabilityService implements OnModuleInit, OnModuleDestroy {
|
|
|
527
528
|
/**
|
|
528
529
|
* 从错误对象提取错误信息
|
|
529
530
|
* 支持 PluginError 和 RateLimitError
|
|
531
|
+
* @param error - 捕获到的错误
|
|
532
|
+
* @param pluginKey - 插件 key,用于获取 displayName 格式化 PluginError 消息
|
|
530
533
|
*/
|
|
531
534
|
private extractErrorInfo;
|
|
532
535
|
private buildActionContext;
|
package/dist/index.js
CHANGED
|
@@ -532,6 +532,100 @@ async function migrationAdaptor(promise) {
|
|
|
532
532
|
}
|
|
533
533
|
__name(migrationAdaptor, "migrationAdaptor");
|
|
534
534
|
|
|
535
|
+
// src/utils/plugin-error-format.ts
|
|
536
|
+
var PLUGIN_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
537
|
+
"INVALID_INPUT",
|
|
538
|
+
"EXECUTION_ERROR",
|
|
539
|
+
"INVALID_OUTPUT",
|
|
540
|
+
"INVALID_CONFIG",
|
|
541
|
+
"ACTION_NOT_FOUND"
|
|
542
|
+
]);
|
|
543
|
+
function isPluginError(error) {
|
|
544
|
+
if (!error || typeof error !== "object") return false;
|
|
545
|
+
const code = error.code;
|
|
546
|
+
return typeof code === "string" && PLUGIN_ERROR_CODES.has(code);
|
|
547
|
+
}
|
|
548
|
+
__name(isPluginError, "isPluginError");
|
|
549
|
+
function formatPluginError(error, displayName) {
|
|
550
|
+
if (!isPluginError(error)) return null;
|
|
551
|
+
const err = error;
|
|
552
|
+
const label = displayName ? `\u300C${displayName}\u300D` : "";
|
|
553
|
+
switch (err.code) {
|
|
554
|
+
case "INVALID_INPUT":
|
|
555
|
+
return `${label}\u63D2\u4EF6\u8F93\u5165\u6821\u9A8C\u5931\u8D25: ${formatZodIssuesChinese(err.details)}`;
|
|
556
|
+
case "INVALID_OUTPUT":
|
|
557
|
+
return `${label}\u63D2\u4EF6\u8F93\u51FA\u6821\u9A8C\u5931\u8D25: ${formatZodIssuesChinese(err.details)}`;
|
|
558
|
+
case "INVALID_CONFIG":
|
|
559
|
+
return `${label}\u63D2\u4EF6\u914D\u7F6E\u6821\u9A8C\u5931\u8D25: ${formatZodIssuesChinese(err.details)}`;
|
|
560
|
+
case "ACTION_NOT_FOUND":
|
|
561
|
+
return `${label}\u63D2\u4EF6\u64CD\u4F5C\u4E0D\u5B58\u5728`;
|
|
562
|
+
case "EXECUTION_ERROR": {
|
|
563
|
+
const inner = err.originalError instanceof Error ? err.originalError.message : "";
|
|
564
|
+
return inner ? `${label}\u63D2\u4EF6\u6267\u884C\u5931\u8D25: ${inner}` : `${label}\u63D2\u4EF6\u6267\u884C\u5931\u8D25`;
|
|
565
|
+
}
|
|
566
|
+
default:
|
|
567
|
+
return `${label}\u63D2\u4EF6\u6267\u884C\u5931\u8D25`;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
__name(formatPluginError, "formatPluginError");
|
|
571
|
+
function formatZodIssuesChinese(details) {
|
|
572
|
+
if (!Array.isArray(details) || details.length === 0) return "\u53C2\u6570\u683C\u5F0F\u6821\u9A8C\u51FA\u9519";
|
|
573
|
+
return details.map(translateZodIssue).join("\uFF1B");
|
|
574
|
+
}
|
|
575
|
+
__name(formatZodIssuesChinese, "formatZodIssuesChinese");
|
|
576
|
+
function translateZodIssue(issue) {
|
|
577
|
+
const field = issue.path?.length > 0 ? `\u300C${issue.path.join(".")}\u300D` : "";
|
|
578
|
+
switch (issue.code) {
|
|
579
|
+
case "invalid_type": {
|
|
580
|
+
const received = issue.received;
|
|
581
|
+
if (received === "undefined" || received === "null") {
|
|
582
|
+
return `${field}\u5B57\u6BB5\u662F\u5FC5\u586B\u7684`;
|
|
583
|
+
}
|
|
584
|
+
return `${field}\u5B57\u6BB5\u7C7B\u578B\u9519\u8BEF\uFF0C\u671F\u671B${translateType(issue.expected)}`;
|
|
585
|
+
}
|
|
586
|
+
case "too_small": {
|
|
587
|
+
if (issue.type === "string") {
|
|
588
|
+
if (issue.minimum === 1) return `${field}\u5B57\u6BB5\u4E0D\u80FD\u4E3A\u7A7A`;
|
|
589
|
+
return `${field}\u5B57\u6BB5\u957F\u5EA6\u4E0D\u80FD\u5C11\u4E8E ${issue.minimum} \u4E2A\u5B57\u7B26`;
|
|
590
|
+
}
|
|
591
|
+
if (issue.type === "number") return `${field}\u5B57\u6BB5\u4E0D\u80FD\u5C0F\u4E8E ${issue.minimum}`;
|
|
592
|
+
if (issue.type === "array") return `${field}\u5B57\u6BB5\u81F3\u5C11\u9700\u8981 ${issue.minimum} \u9879`;
|
|
593
|
+
return `${field}\u5B57\u6BB5\u503C\u8FC7\u5C0F`;
|
|
594
|
+
}
|
|
595
|
+
case "too_big": {
|
|
596
|
+
if (issue.type === "string") return `${field}\u5B57\u6BB5\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7 ${issue.maximum} \u4E2A\u5B57\u7B26`;
|
|
597
|
+
if (issue.type === "number") return `${field}\u5B57\u6BB5\u4E0D\u80FD\u5927\u4E8E ${issue.maximum}`;
|
|
598
|
+
if (issue.type === "array") return `${field}\u5B57\u6BB5\u6700\u591A ${issue.maximum} \u9879`;
|
|
599
|
+
return `${field}\u5B57\u6BB5\u503C\u8FC7\u5927`;
|
|
600
|
+
}
|
|
601
|
+
case "invalid_string": {
|
|
602
|
+
if (issue.validation === "email") return `${field}\u5B57\u6BB5\u4E0D\u662F\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740`;
|
|
603
|
+
if (issue.validation === "url") return `${field}\u5B57\u6BB5\u4E0D\u662F\u6709\u6548\u7684 URL`;
|
|
604
|
+
if (issue.validation === "regex") return `${field}\u5B57\u6BB5\u683C\u5F0F\u4E0D\u6B63\u786E`;
|
|
605
|
+
return `${field}\u5B57\u6BB5\u683C\u5F0F\u6821\u9A8C\u51FA\u9519`;
|
|
606
|
+
}
|
|
607
|
+
case "invalid_enum_value":
|
|
608
|
+
return `${field}\u5B57\u6BB5\u503C\u4E0D\u5728\u5141\u8BB8\u7684\u8303\u56F4\u5185`;
|
|
609
|
+
case "unrecognized_keys":
|
|
610
|
+
return `\u5305\u542B\u672A\u77E5\u5B57\u6BB5: ${issue.keys?.join(", ")}`;
|
|
611
|
+
default:
|
|
612
|
+
return field ? `${field}\u5B57\u6BB5\u683C\u5F0F\u6821\u9A8C\u51FA\u9519` : "\u8F93\u5165\u683C\u5F0F\u6821\u9A8C\u51FA\u9519";
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
__name(translateZodIssue, "translateZodIssue");
|
|
616
|
+
function translateType(type) {
|
|
617
|
+
const map = {
|
|
618
|
+
string: "\u6587\u672C",
|
|
619
|
+
number: "\u6570\u5B57",
|
|
620
|
+
boolean: "\u5E03\u5C14\u503C",
|
|
621
|
+
array: "\u6570\u7EC4",
|
|
622
|
+
object: "\u5BF9\u8C61",
|
|
623
|
+
integer: "\u6574\u6570"
|
|
624
|
+
};
|
|
625
|
+
return map[type] || type;
|
|
626
|
+
}
|
|
627
|
+
__name(translateType, "translateType");
|
|
628
|
+
|
|
535
629
|
// src/services/capability.service.ts
|
|
536
630
|
function _ts_decorate4(decorators, target, key, desc) {
|
|
537
631
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -867,6 +961,11 @@ var CapabilityService = class _CapabilityService {
|
|
|
867
961
|
});
|
|
868
962
|
const errorCode = String(error?.code ?? "EXECUTION_ERROR");
|
|
869
963
|
this.reportCallEvent(config.pluginKey, false, durationMs, isStream, contextOverride, errorCode);
|
|
964
|
+
const displayName = this.pluginLoaderService.getManifest(config.pluginKey)?.displayName;
|
|
965
|
+
const formattedMessage = formatPluginError(error, displayName);
|
|
966
|
+
if (formattedMessage && error instanceof Error) {
|
|
967
|
+
error.message = formattedMessage;
|
|
968
|
+
}
|
|
870
969
|
throw error;
|
|
871
970
|
}
|
|
872
971
|
}
|
|
@@ -922,6 +1021,11 @@ var CapabilityService = class _CapabilityService {
|
|
|
922
1021
|
});
|
|
923
1022
|
const errorCode = String(error?.code ?? "EXECUTION_ERROR");
|
|
924
1023
|
this.reportCallEvent(config.pluginKey, false, durationMs, true, contextOverride, errorCode);
|
|
1024
|
+
const displayName = this.pluginLoaderService.getManifest(config.pluginKey)?.displayName;
|
|
1025
|
+
const formattedMessage = formatPluginError(error, displayName);
|
|
1026
|
+
if (formattedMessage && error instanceof Error) {
|
|
1027
|
+
error.message = formattedMessage;
|
|
1028
|
+
}
|
|
925
1029
|
throw error;
|
|
926
1030
|
}
|
|
927
1031
|
}
|
|
@@ -1016,7 +1120,7 @@ var CapabilityService = class _CapabilityService {
|
|
|
1016
1120
|
this.reportCallEvent(config.pluginKey, false, durationMs, true, contextOverride, errorCode);
|
|
1017
1121
|
yield {
|
|
1018
1122
|
type: "error",
|
|
1019
|
-
error: this.extractErrorInfo(error)
|
|
1123
|
+
error: this.extractErrorInfo(error, config.pluginKey)
|
|
1020
1124
|
};
|
|
1021
1125
|
}
|
|
1022
1126
|
}
|
|
@@ -1039,8 +1143,10 @@ var CapabilityService = class _CapabilityService {
|
|
|
1039
1143
|
/**
|
|
1040
1144
|
* 从错误对象提取错误信息
|
|
1041
1145
|
* 支持 PluginError 和 RateLimitError
|
|
1146
|
+
* @param error - 捕获到的错误
|
|
1147
|
+
* @param pluginKey - 插件 key,用于获取 displayName 格式化 PluginError 消息
|
|
1042
1148
|
*/
|
|
1043
|
-
extractErrorInfo(error) {
|
|
1149
|
+
extractErrorInfo(error, pluginKey) {
|
|
1044
1150
|
const err = error;
|
|
1045
1151
|
const code = err?.code ?? "EXECUTION_ERROR";
|
|
1046
1152
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -1052,6 +1158,16 @@ var CapabilityService = class _CapabilityService {
|
|
|
1052
1158
|
rateLimitMessage: err.rateLimitMessage
|
|
1053
1159
|
};
|
|
1054
1160
|
}
|
|
1161
|
+
if (pluginKey) {
|
|
1162
|
+
const displayName = this.pluginLoaderService.getManifest(pluginKey)?.displayName;
|
|
1163
|
+
const formattedMessage = formatPluginError(error, displayName);
|
|
1164
|
+
if (formattedMessage) {
|
|
1165
|
+
return {
|
|
1166
|
+
code,
|
|
1167
|
+
message: formattedMessage
|
|
1168
|
+
};
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1055
1171
|
return {
|
|
1056
1172
|
code,
|
|
1057
1173
|
message
|