diff --git a/src/utils/errorHelper.ts b/src/utils/errorHelper.ts new file mode 100644 index 00000000..481a1d72 --- /dev/null +++ b/src/utils/errorHelper.ts @@ -0,0 +1,39 @@ +/* eslint-disable header/header */ + + +/* +Copyright 2022 The Dapr Authors +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +export interface ParsedDaprError { + code: string; + message: string; + metadata: Record; + } + + export function parseDaprError(error: any): ParsedDaprError { + if (error && typeof error === "object" && "details" in error) { + const details = (error as any).details; + return { + code: details?.code ?? "UNKNOWN", + message: details?.message ?? "No message provided", + metadata: details?.metadata ?? {}, + }; + } + + return { + code: "UNKNOWN", + message: error?.message ?? "An unknown error occurred", + metadata: {}, + }; + } + \ No newline at end of file