@jerome-benoit/sap-ai-provider 4.6.4 → 4.6.6
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/{chunk-VVJCWWDC.js → chunk-26WNWERS.js} +5 -5
- package/dist/chunk-26WNWERS.js.map +1 -0
- package/dist/{chunk-UZU24CQH.js → chunk-NXIKTWY3.js} +3 -3
- package/dist/{chunk-ORUTDXQO.js → chunk-OQIELEJP.js} +2 -2
- package/dist/{chunk-GLGLTUZM.js → chunk-SWBHSRPT.js} +21 -18
- package/dist/{chunk-GLGLTUZM.js.map → chunk-SWBHSRPT.js.map} +1 -1
- package/dist/{foundation-models-embedding-model-strategy-JTZUKIYM.js → foundation-models-embedding-model-strategy-FVVUOPNF.js} +4 -4
- package/dist/{foundation-models-language-model-strategy-NT5HVEM5.js → foundation-models-language-model-strategy-WNNDNZNZ.js} +4 -4
- package/dist/index.cjs +22 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5 -5
- package/dist/{orchestration-embedding-model-strategy-BBCIC45Q.js → orchestration-embedding-model-strategy-HV7ACKOY.js} +4 -4
- package/dist/{orchestration-language-model-strategy-YPDJAXBL.js → orchestration-language-model-strategy-GIWRWQNG.js} +4 -4
- package/package.json +1 -1
- package/dist/chunk-VVJCWWDC.js.map +0 -1
- /package/dist/{chunk-UZU24CQH.js.map → chunk-NXIKTWY3.js.map} +0 -0
- /package/dist/{chunk-ORUTDXQO.js.map → chunk-OQIELEJP.js.map} +0 -0
- /package/dist/{foundation-models-embedding-model-strategy-JTZUKIYM.js.map → foundation-models-embedding-model-strategy-FVVUOPNF.js.map} +0 -0
- /package/dist/{foundation-models-language-model-strategy-NT5HVEM5.js.map → foundation-models-language-model-strategy-WNNDNZNZ.js.map} +0 -0
- /package/dist/{orchestration-embedding-model-strategy-BBCIC45Q.js.map → orchestration-embedding-model-strategy-HV7ACKOY.js.map} +0 -0
- /package/dist/{orchestration-language-model-strategy-YPDJAXBL.js.map → orchestration-language-model-strategy-GIWRWQNG.js.map} +0 -0
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
createAISDKRequestBodySummary,
|
|
10
10
|
createStreamTransformer,
|
|
11
11
|
mapToolChoice
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-OQIELEJP.js";
|
|
13
13
|
import {
|
|
14
14
|
VERSION,
|
|
15
15
|
convertToAISDKError,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
isPrefillError,
|
|
18
18
|
normalizeHeaders,
|
|
19
19
|
sapAILanguageModelProviderOptions
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-SWBHSRPT.js";
|
|
21
21
|
|
|
22
22
|
// src/base-language-model-strategy.ts
|
|
23
23
|
import { parseProviderOptions } from "@ai-sdk/provider-utils";
|
|
@@ -61,7 +61,7 @@ var BaseLanguageModelStrategy = class {
|
|
|
61
61
|
} catch (error) {
|
|
62
62
|
if (this.shouldRetryWithoutPrefill(error, settings, options)) {
|
|
63
63
|
const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);
|
|
64
|
-
if (retryPrompt.length > 0
|
|
64
|
+
if (retryPrompt.length > 0) {
|
|
65
65
|
return this.doGenerate(config, settings, {
|
|
66
66
|
...options,
|
|
67
67
|
prompt: retryPrompt
|
|
@@ -119,7 +119,7 @@ var BaseLanguageModelStrategy = class {
|
|
|
119
119
|
} catch (error) {
|
|
120
120
|
if (this.shouldRetryWithoutPrefill(error, settings, options)) {
|
|
121
121
|
const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);
|
|
122
|
-
if (retryPrompt.length > 0
|
|
122
|
+
if (retryPrompt.length > 0) {
|
|
123
123
|
return this.doStream(config, settings, {
|
|
124
124
|
...options,
|
|
125
125
|
prompt: retryPrompt
|
|
@@ -232,4 +232,4 @@ var BaseLanguageModelStrategy = class {
|
|
|
232
232
|
export {
|
|
233
233
|
BaseLanguageModelStrategy
|
|
234
234
|
};
|
|
235
|
-
//# sourceMappingURL=chunk-
|
|
235
|
+
//# sourceMappingURL=chunk-26WNWERS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/base-language-model-strategy.ts"],"sourcesContent":["/** Base class for language model strategies using the Template Method pattern. */\nimport type {\n LanguageModelV3CallOptions,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamResult,\n SharedV3Warning,\n} from \"@ai-sdk/provider\";\nimport type { ChatMessage } from \"@sap-ai-sdk/orchestration\";\n\nimport { parseProviderOptions } from \"@ai-sdk/provider-utils\";\n\nimport type { SAPAIModelSettings } from \"./sap-ai-settings.js\";\nimport type { LanguageModelAPIStrategy, LanguageModelStrategyConfig } from \"./sap-ai-strategy.js\";\n\nimport { convertToSAPMessages } from \"./convert-to-sap-messages.js\";\nimport { convertToAISDKError, isPrefillError, normalizeHeaders } from \"./sap-ai-error.js\";\nimport { getProviderName, sapAILanguageModelProviderOptions } from \"./sap-ai-provider-options.js\";\nimport {\n buildGenerateResult,\n buildModelParams,\n createAISDKRequestBodySummary,\n createStreamTransformer,\n mapToolChoice,\n type ParamMapping,\n type SAPToolChoice,\n type SDKCitation,\n type SDKResponse,\n type SDKStreamChunk,\n type SDKTokenUsage,\n StreamIdGenerator,\n} from \"./strategy-utils.js\";\nimport { VERSION } from \"./version.js\";\n\n/**\n * Result of building common parts for a language model request.\n * @template TMessages - The message array type (e.g., `ChatMessage[]`, `AzureOpenAiChatCompletionRequestMessage[]`)\n * @template TToolChoice - The tool choice type (e.g., `SAPToolChoice`)\n * @internal\n */\nexport interface CommonBuildResult<TMessages extends unknown[] = unknown[], TToolChoice = unknown> {\n readonly messages: TMessages;\n readonly modelParams: Record<string, unknown>;\n readonly providerName: string;\n readonly sapOptions: Record<string, unknown> | undefined;\n readonly toolChoice: TToolChoice;\n readonly warnings: SharedV3Warning[];\n}\n\n/**\n * Stream response shape returned by executeStreamCall.\n * @internal\n */\nexport interface StreamCallResponse {\n readonly getCitations?: () => SDKCitation[] | undefined;\n readonly getFinishReason: () => null | string | undefined;\n readonly getIntermediateFailures?: () => undefined | unknown[];\n readonly getTokenUsage: () => null | SDKTokenUsage | undefined;\n readonly responseHeaders?: Record<string, string>;\n /** Server-provided completion ID extracted from _data, if available. */\n readonly responseId?: string;\n readonly stream: AsyncIterable<SDKStreamChunk>;\n}\n\n/**\n * Abstract base class for language model strategies using the Template Method pattern.\n * @template TClient - The SDK client type (e.g., AzureOpenAiChatClient, OrchestrationClient).\n * @template TRequest - The API request type (e.g., AzureOpenAiChatCompletionParameters).\n * @template TSettings - The model settings type extending SAPAIModelSettings.\n * @internal\n */\nexport abstract class BaseLanguageModelStrategy<\n TClient,\n TRequest,\n TSettings extends SAPAIModelSettings = SAPAIModelSettings,\n> implements LanguageModelAPIStrategy<TSettings> {\n /**\n * Common parameter mappings for language model APIs.\n * @internal\n */\n static readonly COMMON_PARAM_MAPPINGS: readonly ParamMapping[] = [\n { camelCaseKey: \"maxTokens\", optionKey: \"maxOutputTokens\", outputKey: \"max_tokens\" },\n { camelCaseKey: \"temperature\", optionKey: \"temperature\", outputKey: \"temperature\" },\n { camelCaseKey: \"topP\", optionKey: \"topP\", outputKey: \"top_p\" },\n {\n camelCaseKey: \"frequencyPenalty\",\n optionKey: \"frequencyPenalty\",\n outputKey: \"frequency_penalty\",\n },\n {\n camelCaseKey: \"presencePenalty\",\n optionKey: \"presencePenalty\",\n outputKey: \"presence_penalty\",\n },\n { camelCaseKey: \"seed\", optionKey: \"seed\", outputKey: \"seed\" },\n { camelCaseKey: \"parallel_tool_calls\", outputKey: \"parallel_tool_calls\" },\n ] as const;\n\n async doGenerate(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n try {\n const commonParts = await this.buildCommonParts(config, settings, options);\n const { request, warnings } = this.buildRequest(config, settings, options, commonParts);\n\n const client = this.createClient(config, settings, commonParts);\n\n const response = await this.executeApiCall(client, request, options.abortSignal ?? undefined);\n\n return buildGenerateResult({\n modelId: config.modelId,\n providerName: commonParts.providerName,\n requestBody: request,\n response,\n responseHeaders: normalizeHeaders(response.rawResponse.headers),\n version: VERSION,\n warnings: [...commonParts.warnings, ...warnings],\n });\n } catch (error) {\n if (this.shouldRetryWithoutPrefill(error, settings, options)) {\n const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);\n if (retryPrompt.length > 0) {\n return this.doGenerate(config, settings, {\n ...options,\n prompt: retryPrompt,\n });\n }\n }\n throw convertToAISDKError(error, {\n operation: \"doGenerate\",\n requestBody: createAISDKRequestBodySummary(options),\n url: this.getUrl(),\n });\n }\n }\n\n async doStream(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n try {\n const commonParts = await this.buildCommonParts(config, settings, options);\n const { request, warnings } = this.buildRequest(config, settings, options, commonParts);\n\n const client = this.createClient(config, settings, commonParts);\n\n const streamResponse = await this.executeStreamCall(\n client,\n request,\n options.abortSignal ?? undefined,\n settings,\n );\n\n const idGenerator = new StreamIdGenerator();\n const responseId = streamResponse.responseId ?? idGenerator.generateResponseId();\n\n const streamWarnings = this.collectStreamWarnings(settings, commonParts.sapOptions);\n\n const transformedStream = createStreamTransformer({\n convertToAISDKError,\n idGenerator,\n includeRawChunks: options.includeRawChunks ?? false,\n modelId: config.modelId,\n options,\n providerName: commonParts.providerName,\n responseHeaders: streamResponse.responseHeaders,\n responseId,\n sdkStream: streamResponse.stream,\n streamResponseGetCitations: streamResponse.getCitations,\n streamResponseGetFinishReason: streamResponse.getFinishReason,\n streamResponseGetIntermediateFailures: streamResponse.getIntermediateFailures,\n streamResponseGetTokenUsage: streamResponse.getTokenUsage,\n url: this.getUrl(),\n version: VERSION,\n warnings: [...commonParts.warnings, ...warnings, ...streamWarnings],\n });\n\n return {\n request: {\n body: request,\n },\n response: {\n headers: streamResponse.responseHeaders,\n },\n stream: transformedStream,\n };\n } catch (error) {\n if (this.shouldRetryWithoutPrefill(error, settings, options)) {\n const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);\n if (retryPrompt.length > 0) {\n return this.doStream(config, settings, {\n ...options,\n prompt: retryPrompt,\n });\n }\n }\n throw convertToAISDKError(error, {\n operation: \"doStream\",\n requestBody: createAISDKRequestBodySummary(options),\n url: this.getUrl(),\n });\n }\n }\n\n /**\n * Builds common parts shared between doGenerate and doStream.\n * @param config - Strategy configuration.\n * @param settings - Model settings.\n * @param options - AI SDK call options.\n * @returns Common build result with typed messages and tool choice.\n * @internal\n */\n protected async buildCommonParts(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n ): Promise<CommonBuildResult<ChatMessage[], SAPToolChoice | undefined>> {\n const providerName = getProviderName(config.provider);\n\n const sapOptions = await parseProviderOptions({\n provider: providerName,\n providerOptions: options.providerOptions,\n schema: sapAILanguageModelProviderOptions,\n });\n\n const warnings: SharedV3Warning[] = [];\n\n const messages = convertToSAPMessages(options.prompt, {\n escapeTemplatePlaceholders: this.getEscapeTemplatePlaceholders(sapOptions, settings),\n includeReasoning: this.getIncludeReasoning(sapOptions, settings),\n });\n\n const { modelParams, warnings: paramWarnings } = buildModelParams({\n options,\n paramMappings: this.getParamMappings(),\n providerModelParams: sapOptions?.modelParams as Record<string, unknown> | undefined,\n settingsModelParams: settings.modelParams as Record<string, unknown> | undefined,\n });\n warnings.push(...paramWarnings);\n\n const toolChoice = mapToolChoice(options.toolChoice);\n\n return {\n messages,\n modelParams,\n providerName,\n sapOptions,\n toolChoice,\n warnings,\n };\n }\n\n /**\n * Builds the API-specific request body.\n * @param config - Strategy configuration.\n * @param settings - Model settings.\n * @param options - AI SDK call options.\n * @param commonParts - Common build result from base class.\n * @returns Request body and accumulated warnings.\n * @internal\n */\n protected abstract buildRequest(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n commonParts: CommonBuildResult<ChatMessage[], SAPToolChoice | undefined>,\n ): { readonly request: TRequest; readonly warnings: SharedV3Warning[] };\n\n /**\n * Collects stream-specific warnings.\n * Override in subclasses to add API-specific streaming warnings.\n * @param _settings - Model settings (unused in base implementation).\n * @param _sapOptions - Provider options (unused in base implementation).\n * @returns Array of warnings for streaming operations.\n * @internal\n */\n protected collectStreamWarnings(\n _settings: TSettings,\n _sapOptions?: Record<string, unknown>,\n ): SharedV3Warning[] {\n return [];\n }\n\n /**\n * Creates the appropriate SDK client for this API.\n * @param config - Strategy configuration.\n * @param settings - Model settings.\n * @param commonParts - Common build result (messages, options, etc.).\n * @returns SDK client instance.\n * @internal\n */\n protected abstract createClient(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n commonParts: CommonBuildResult<ChatMessage[], SAPToolChoice | undefined>,\n ): TClient;\n\n /**\n * Executes the non-streaming API call.\n * @param client - SDK client instance.\n * @param request - Request body.\n * @param abortSignal - Optional abort signal.\n * @returns SDK response.\n * @internal\n */\n protected abstract executeApiCall(\n client: TClient,\n request: TRequest,\n abortSignal: AbortSignal | undefined,\n ): Promise<SDKResponse>;\n\n /**\n * Executes the streaming API call.\n * @param client - SDK client instance.\n * @param request - Request body.\n * @param abortSignal - Optional abort signal.\n * @param settings - Model settings for API-specific stream options.\n * @returns Stream response with accessors.\n * @internal\n */\n protected abstract executeStreamCall(\n client: TClient,\n request: TRequest,\n abortSignal: AbortSignal | undefined,\n settings: TSettings,\n ): Promise<StreamCallResponse>;\n\n /**\n * Returns whether to escape template placeholders for this API.\n * @param _sapOptions - Parsed provider options (unused in base implementation).\n * @param _settings - Model settings (unused in base implementation).\n * @returns false by default; Orchestration strategy overrides to return true.\n * @internal\n */\n protected getEscapeTemplatePlaceholders(\n _sapOptions: Record<string, unknown> | undefined,\n _settings: TSettings,\n ): boolean {\n return false;\n }\n\n /**\n * Returns whether to include reasoning in the response.\n * @param sapOptions - Parsed provider options.\n * @param settings - Model settings.\n * @returns Whether to include reasoning (checks sapOptions then settings, defaults to false).\n * @internal\n */\n protected getIncludeReasoning(\n sapOptions: Record<string, unknown> | undefined,\n settings: TSettings,\n ): boolean {\n return (\n (sapOptions?.includeReasoning as boolean | undefined) ??\n (settings as SAPAIModelSettings & { includeReasoning?: boolean }).includeReasoning ??\n false\n );\n }\n\n /**\n * Returns the parameter mappings specific to this API strategy.\n * @returns Array of parameter mappings.\n * @internal\n */\n protected abstract getParamMappings(): readonly ParamMapping[];\n\n /**\n * Returns the URL identifier for this API (used in error messages).\n * @returns URL string identifier.\n * @internal\n */\n protected abstract getUrl(): string;\n\n /**\n * Checks whether a prefill error should trigger a retry without trailing assistant messages.\n * @param error - Caught error from API call.\n * @param settings - Model settings.\n * @param options - Call options containing the prompt.\n * @returns Whether the request should be retried without trailing assistant messages.\n * @internal\n */\n private shouldRetryWithoutPrefill(\n error: unknown,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n ): boolean {\n const suppress =\n (settings as SAPAIModelSettings & { suppressPrefillErrors?: boolean })\n .suppressPrefillErrors ?? true;\n return (\n suppress &&\n isPrefillError(error) &&\n options.prompt.length > 0 &&\n options.prompt.at(-1)?.role === \"assistant\"\n );\n }\n\n /**\n * Strips all trailing assistant messages from a prompt for prefill retry.\n * Removes all (not just the last) to guarantee the retry cannot re-trigger.\n * @param prompt - Original prompt array.\n * @returns Prompt with trailing assistant messages removed.\n * @internal\n */\n private stripTrailingAssistantMessages(\n prompt: LanguageModelV3CallOptions[\"prompt\"],\n ): LanguageModelV3CallOptions[\"prompt\"] {\n let end = prompt.length;\n while (end > 0 && prompt[end - 1]?.role === \"assistant\") {\n end--;\n }\n return prompt.slice(0, end);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,12 +2,12 @@ import {createRequire as __createRequire} from 'module';var require=__createRequ
|
|
|
2
2
|
import {
|
|
3
3
|
buildEmbeddingResult,
|
|
4
4
|
prepareEmbeddingCall
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-OQIELEJP.js";
|
|
6
6
|
import {
|
|
7
7
|
VERSION,
|
|
8
8
|
convertToAISDKError,
|
|
9
9
|
deepMerge
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SWBHSRPT.js";
|
|
11
11
|
|
|
12
12
|
// src/base-embedding-model-strategy.ts
|
|
13
13
|
var BaseEmbeddingModelStrategy = class {
|
|
@@ -58,4 +58,4 @@ var BaseEmbeddingModelStrategy = class {
|
|
|
58
58
|
export {
|
|
59
59
|
BaseEmbeddingModelStrategy
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
61
|
+
//# sourceMappingURL=chunk-NXIKTWY3.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
getProviderName,
|
|
5
5
|
sapAIEmbeddingProviderOptions,
|
|
6
6
|
validateModelParamsWithWarnings
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-SWBHSRPT.js";
|
|
8
8
|
|
|
9
9
|
// src/strategy-utils.ts
|
|
10
10
|
import { TooManyEmbeddingValuesForCallError } from "@ai-sdk/provider";
|
|
@@ -682,4 +682,4 @@ export {
|
|
|
682
682
|
normalizeEmbedding,
|
|
683
683
|
prepareEmbeddingCall
|
|
684
684
|
};
|
|
685
|
-
//# sourceMappingURL=chunk-
|
|
685
|
+
//# sourceMappingURL=chunk-OQIELEJP.js.map
|
|
@@ -30051,7 +30051,7 @@ var UnsupportedFeatureError = class extends Error {
|
|
|
30051
30051
|
};
|
|
30052
30052
|
function convertSAPErrorToAPICallError(errorResponse, context) {
|
|
30053
30053
|
const { code, location, message, requestId } = extractErrorFields(errorResponse);
|
|
30054
|
-
const statusCode = getStatusCodeFromSAPError(code);
|
|
30054
|
+
const statusCode = getStatusCodeFromSAPError(code, context?.httpStatusCode);
|
|
30055
30055
|
const responseBody = JSON.stringify({
|
|
30056
30056
|
error: {
|
|
30057
30057
|
code,
|
|
@@ -30112,10 +30112,11 @@ function convertToAISDKError(error, context) {
|
|
|
30112
30112
|
return error;
|
|
30113
30113
|
}
|
|
30114
30114
|
const rootError = getRootError(error);
|
|
30115
|
-
const errorResponse =
|
|
30115
|
+
const errorResponse = findStructuredErrorResponse(error);
|
|
30116
30116
|
if (errorResponse) {
|
|
30117
30117
|
return convertSAPErrorToAPICallError(errorResponse, {
|
|
30118
30118
|
...context,
|
|
30119
|
+
httpStatusCode: getAxiosError(error)?.response?.status,
|
|
30119
30120
|
responseHeaders: context?.responseHeaders ?? getAxiosResponseHeaders(error)
|
|
30120
30121
|
});
|
|
30121
30122
|
}
|
|
@@ -30276,7 +30277,7 @@ function extractModelIdentifier(message, location) {
|
|
|
30276
30277
|
return void 0;
|
|
30277
30278
|
}
|
|
30278
30279
|
function extractSAPErrorMessage(error) {
|
|
30279
|
-
const errorResponse =
|
|
30280
|
+
const errorResponse = findStructuredErrorResponse(error);
|
|
30280
30281
|
if (errorResponse) {
|
|
30281
30282
|
return extractErrorFields(errorResponse).message;
|
|
30282
30283
|
}
|
|
@@ -30286,18 +30287,18 @@ function extractSAPErrorMessage(error) {
|
|
|
30286
30287
|
}
|
|
30287
30288
|
return typeof rootError === "string" ? rootError : void 0;
|
|
30288
30289
|
}
|
|
30289
|
-
function
|
|
30290
|
+
function findStructuredErrorResponse(error) {
|
|
30290
30291
|
const rootError = getRootError(error);
|
|
30291
|
-
if (
|
|
30292
|
+
if (isStructuredErrorResponse(rootError)) {
|
|
30292
30293
|
return rootError;
|
|
30293
30294
|
}
|
|
30294
30295
|
const axiosData = getAxiosError(error)?.response?.data;
|
|
30295
|
-
if (axiosData &&
|
|
30296
|
+
if (axiosData && isStructuredErrorResponse(axiosData)) {
|
|
30296
30297
|
return axiosData;
|
|
30297
30298
|
}
|
|
30298
30299
|
if (rootError instanceof Error) {
|
|
30299
30300
|
const parsed = tryExtractSAPErrorFromMessage(rootError.message);
|
|
30300
|
-
if (parsed &&
|
|
30301
|
+
if (parsed && isStructuredErrorResponse(parsed)) {
|
|
30301
30302
|
return parsed;
|
|
30302
30303
|
}
|
|
30303
30304
|
}
|
|
@@ -30324,11 +30325,13 @@ function getAxiosResponseHeaders(error) {
|
|
|
30324
30325
|
function getRootError(error) {
|
|
30325
30326
|
return error instanceof Error && (0, import_util.isErrorWithCause)(error) ? error.rootCause : error;
|
|
30326
30327
|
}
|
|
30327
|
-
function getStatusCodeFromSAPError(code) {
|
|
30328
|
-
if (
|
|
30329
|
-
if (code >= 100 && code < 600) {
|
|
30328
|
+
function getStatusCodeFromSAPError(code, httpStatusCode) {
|
|
30329
|
+
if (code && code >= 100 && code < 600) {
|
|
30330
30330
|
return code;
|
|
30331
30331
|
}
|
|
30332
|
+
if (httpStatusCode && httpStatusCode >= 100 && httpStatusCode < 600) {
|
|
30333
|
+
return httpStatusCode;
|
|
30334
|
+
}
|
|
30332
30335
|
return HTTP_STATUS.INTERNAL_ERROR;
|
|
30333
30336
|
}
|
|
30334
30337
|
function isAbortError(error) {
|
|
@@ -30340,7 +30343,10 @@ function isAbortError(error) {
|
|
|
30340
30343
|
}
|
|
30341
30344
|
return false;
|
|
30342
30345
|
}
|
|
30343
|
-
function
|
|
30346
|
+
function isRetryable(statusCode) {
|
|
30347
|
+
return statusCode === HTTP_STATUS.REQUEST_TIMEOUT || statusCode === HTTP_STATUS.CONFLICT || statusCode === HTTP_STATUS.RATE_LIMIT || statusCode >= HTTP_STATUS.INTERNAL_ERROR && statusCode < 600;
|
|
30348
|
+
}
|
|
30349
|
+
function isStructuredErrorResponse(error) {
|
|
30344
30350
|
if (error === null || typeof error !== "object" || !("error" in error)) {
|
|
30345
30351
|
return false;
|
|
30346
30352
|
}
|
|
@@ -30356,7 +30362,7 @@ function isOrchestrationErrorResponse(error) {
|
|
|
30356
30362
|
if (typeof errorEntry.message !== "string") {
|
|
30357
30363
|
return false;
|
|
30358
30364
|
}
|
|
30359
|
-
if ("code" in entry && typeof errorEntry.code !== "number") {
|
|
30365
|
+
if ("code" in entry && errorEntry.code != null && typeof errorEntry.code !== "number") {
|
|
30360
30366
|
return false;
|
|
30361
30367
|
}
|
|
30362
30368
|
return true;
|
|
@@ -30369,14 +30375,11 @@ function isOrchestrationErrorResponse(error) {
|
|
|
30369
30375
|
if (typeof errorObj.message !== "string") {
|
|
30370
30376
|
return false;
|
|
30371
30377
|
}
|
|
30372
|
-
if ("code" in innerError && typeof errorObj.code !== "number") {
|
|
30378
|
+
if ("code" in innerError && errorObj.code != null && typeof errorObj.code !== "number") {
|
|
30373
30379
|
return false;
|
|
30374
30380
|
}
|
|
30375
30381
|
return true;
|
|
30376
30382
|
}
|
|
30377
|
-
function isRetryable(statusCode) {
|
|
30378
|
-
return statusCode === HTTP_STATUS.REQUEST_TIMEOUT || statusCode === HTTP_STATUS.CONFLICT || statusCode === HTTP_STATUS.RATE_LIMIT || statusCode >= HTTP_STATUS.INTERNAL_ERROR && statusCode < 600;
|
|
30379
|
-
}
|
|
30380
30383
|
function serializeAxiosResponseData(data, maxLength = 2e3) {
|
|
30381
30384
|
if (data === void 0) return void 0;
|
|
30382
30385
|
let serialized;
|
|
@@ -30412,7 +30415,7 @@ function tryExtractSAPErrorFromMessage(message) {
|
|
|
30412
30415
|
}
|
|
30413
30416
|
|
|
30414
30417
|
// src/version.ts
|
|
30415
|
-
var VERSION = true ? "4.6.
|
|
30418
|
+
var VERSION = true ? "4.6.6" : "0.0.0-test";
|
|
30416
30419
|
|
|
30417
30420
|
export {
|
|
30418
30421
|
__toESM,
|
|
@@ -30466,4 +30469,4 @@ mime-types/index.js:
|
|
|
30466
30469
|
axios/dist/node/axios.cjs:
|
|
30467
30470
|
(*! Axios v1.14.0 Copyright (c) 2026 Matt Zabriskie and contributors *)
|
|
30468
30471
|
*/
|
|
30469
|
-
//# sourceMappingURL=chunk-
|
|
30472
|
+
//# sourceMappingURL=chunk-SWBHSRPT.js.map
|