@kontent-ai/core-sdk 11.0.0-3 → 11.0.0-4

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.
@@ -1,5 +1,7 @@
1
1
  import type { Header, HttpMethod, LiteralUnionNumber, RetryStrategyOptions } from '../models/core.models.js';
2
+ import type { CoreSdkError } from '../models/error.models.js';
2
3
  import type { JsonValue } from '../models/json.models.js';
4
+ import type { Result } from '../utils/try.utils.js';
3
5
  /**
4
6
  * Helper status codes for the HTTP service.
5
7
  * It can be any valid number status code as this type only serves as a helper.
@@ -19,13 +21,13 @@ export type DefaultHttpServiceConfig = {
19
21
  */
20
22
  readonly adapter?: HttpAdapter;
21
23
  };
22
- export type HttpResponse<TResponseData extends JsonValue | Blob, TBodyData extends JsonValue | Blob> = {
24
+ export type HttpResponse<TResponseData extends JsonValue | Blob, TBodyData extends JsonValue | Blob> = Result<{
23
25
  readonly data: TResponseData;
24
26
  readonly body: TBodyData;
25
27
  readonly method: HttpMethod;
26
28
  readonly requestHeaders: readonly Header[];
27
29
  readonly adapterResponse: Omit<AdapterResponse, 'toJsonAsync' | 'toBlobAsync'>;
28
- };
30
+ }, CoreSdkError>;
29
31
  export type ExecuteRequestOptions<TBodyData extends JsonValue | Blob> = {
30
32
  readonly url: string;
31
33
  readonly method: HttpMethod;
@@ -1,6 +1,6 @@
1
- import { HttpServiceInvalidResponseError, HttpServiceParsingError } from '../models/error.models.js';
2
1
  import { sdkInfo } from '../sdk-info.js';
3
2
  import { isNotUndefined } from '../utils/core.utils.js';
3
+ import { getDefaultErrorMessage } from '../utils/error.utils.js';
4
4
  import { getSdkIdHeader } from '../utils/header.utils.js';
5
5
  import { runWithRetryAsync, toRequiredRetryStrategyOptions } from '../utils/retry.utils.js';
6
6
  import { tryCatch } from '../utils/try.utils.js';
@@ -13,23 +13,55 @@ export function getDefaultHttpService(config) {
13
13
  };
14
14
  const getRequestBody = () => {
15
15
  if (options.body === null) {
16
- return null;
16
+ return {
17
+ success: true,
18
+ data: null,
19
+ };
17
20
  }
18
21
  if (options.body instanceof Blob) {
19
- return options.body;
22
+ return {
23
+ success: true,
24
+ data: options.body,
25
+ };
20
26
  }
21
- const { success, data: parsedBody } = tryCatch(() => JSON.stringify(options.body));
27
+ const { success, data: parsedBody, error } = tryCatch(() => JSON.stringify(options.body));
22
28
  if (!success) {
23
- throw new HttpServiceParsingError('Failed to stringify body of request.');
29
+ return {
30
+ success: false,
31
+ error: {
32
+ message: 'Failed to stringify body of request.',
33
+ url: options.url,
34
+ details: {
35
+ type: 'invalidBody',
36
+ error: error,
37
+ },
38
+ },
39
+ };
24
40
  }
25
- return parsedBody;
41
+ return {
42
+ success: true,
43
+ data: parsedBody,
44
+ };
26
45
  };
27
46
  const getUrl = () => {
28
- const { success, data: parsedUrl } = tryCatch(() => new URL(options.url));
47
+ const { success, data: parsedUrl, error } = tryCatch(() => new URL(options.url));
29
48
  if (!success) {
30
- throw new HttpServiceParsingError(`Failed to parse url '${options.url}'.`);
49
+ return {
50
+ success: false,
51
+ error: {
52
+ message: `Failed to parse url '${options.url}'.`,
53
+ url: options.url,
54
+ details: {
55
+ type: 'invalidUrl',
56
+ error,
57
+ },
58
+ },
59
+ };
31
60
  }
32
- return parsedUrl;
61
+ return {
62
+ success: true,
63
+ data: parsedUrl,
64
+ };
33
65
  };
34
66
  const requestHeaders = getCombinedRequestHeaders();
35
67
  const retryStrategyOptions = toRequiredRetryStrategyOptions(config?.retryStrategy);
@@ -40,35 +72,71 @@ export function getDefaultHttpService(config) {
40
72
  retryAttempt: 0,
41
73
  requestHeaders,
42
74
  method: options.method,
43
- funcAsync,
75
+ funcAsync: async () => {
76
+ return await funcAsync();
77
+ },
44
78
  });
45
79
  };
80
+ const { success: urlParsedSuccess, data: parsedUrl, error: urlError } = getUrl();
81
+ if (!urlParsedSuccess) {
82
+ return {
83
+ success: false,
84
+ error: urlError,
85
+ };
86
+ }
87
+ const { success: requestBodyParsedSuccess, data: requestBody, error: requestBodyError } = getRequestBody();
88
+ if (!requestBodyParsedSuccess) {
89
+ return {
90
+ success: false,
91
+ error: requestBodyError,
92
+ };
93
+ }
46
94
  const getResponseAsync = async () => {
47
95
  return await adapter.requestAsync({
48
- url: getUrl().toString(),
96
+ url: parsedUrl.toString(),
49
97
  method: options.method,
50
98
  requestHeaders,
51
- body: getRequestBody(),
99
+ body: requestBody,
52
100
  });
53
101
  };
54
102
  const resolveResponseAsync = async (response) => {
55
103
  if (!response.isValidResponse) {
56
- throw new HttpServiceInvalidResponseError({
57
- kontentErrorData: await getKontentErrorDataAsync(response),
58
- adapterResponse: response,
59
- });
104
+ const kontentErrorResponse = await getKontentErrorDataAsync(response);
105
+ return {
106
+ success: false,
107
+ error: {
108
+ details: {
109
+ type: 'invalidResponse',
110
+ isValidResponse: response.isValidResponse,
111
+ responseHeaders: response.responseHeaders,
112
+ status: response.status,
113
+ statusText: response.statusText,
114
+ kontentErrorResponse,
115
+ },
116
+ message: getDefaultErrorMessage({
117
+ url: options.url,
118
+ adapterResponse: response,
119
+ kontentErrorResponse,
120
+ method: options.method,
121
+ }),
122
+ url: options.url,
123
+ },
124
+ };
60
125
  }
61
126
  return {
62
- data: await resolveDataAsync(response),
63
- body: options.body,
64
- method: options.method,
65
- adapterResponse: {
66
- isValidResponse: response.isValidResponse,
67
- responseHeaders: response.responseHeaders,
68
- status: response.status,
69
- statusText: response.statusText,
127
+ success: true,
128
+ data: {
129
+ data: await resolveDataAsync(response),
130
+ body: options.body,
131
+ method: options.method,
132
+ adapterResponse: {
133
+ isValidResponse: response.isValidResponse,
134
+ responseHeaders: response.responseHeaders,
135
+ status: response.status,
136
+ statusText: response.statusText,
137
+ },
138
+ requestHeaders: requestHeaders,
70
139
  },
71
- requestHeaders: requestHeaders,
72
140
  };
73
141
  };
74
142
  return await withRetryAsync(async () => await resolveResponseAsync(await getResponseAsync()));
@@ -1 +1 @@
1
- {"version":3,"file":"http.service.js","sourceRoot":"","sources":["../../lib/http/http.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.service.js","sourceRoot":"","sources":["../../lib/http/http.service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { HttpServiceInvalidResponseError, HttpServiceParsingError } from './error.models.js';
1
+ import type { CoreSdkError } from './error.models.js';
2
2
  /**
3
3
  * SDK info for identification of the SDK
4
4
  */
@@ -44,7 +44,7 @@ export type RetryStrategyOptions = {
44
44
  * Function to determine if the error should be retried.
45
45
  * If not provided, the default implementation will be used.
46
46
  */
47
- readonly canRetryError?: (error: unknown | HttpServiceInvalidResponseError | HttpServiceParsingError) => boolean;
47
+ readonly canRetryError?: (error: CoreSdkError) => boolean;
48
48
  /**
49
49
  * Default delay between requests in milliseconds.
50
50
  * Only used if the `Retry-after` header is not present.
@@ -1,9 +1,7 @@
1
1
  import type { AdapterResponse, HttpServiceStatus } from '../http/http.models.js';
2
- import type { Header, KontentErrorResponseData, RetryStrategyOptions } from './core.models.js';
3
- /**
4
- * Represent an error that is thrown by the SDK
5
- */
6
- export declare class CoreSdkError<TOriginalError extends HttpServiceInvalidResponseError | HttpServiceParsingError | unknown = unknown> extends Error {
2
+ import type { KontentErrorResponseData, RetryStrategyOptions } from './core.models.js';
3
+ export type ErrorType = 'invalidResponse' | 'invalidUrl' | 'unknown' | 'invalidBody';
4
+ export type CoreSdkError = {
7
5
  /**
8
6
  * The message of the error
9
7
  */
@@ -13,62 +11,27 @@ export declare class CoreSdkError<TOriginalError extends HttpServiceInvalidRespo
13
11
  */
14
12
  readonly url: string;
15
13
  /**
16
- * The number of times the request has been retried.
17
- */
18
- readonly retryAttempt: number;
19
- /**
20
- * The retry strategy options used for the request.
21
- */
22
- readonly retryStrategyOptions: Required<RetryStrategyOptions>;
23
- /**
24
- * The headers of the request.
14
+ * Applied retry strategy.
25
15
  */
26
- readonly requestHeaders: readonly Header[];
27
- /**
28
- * The original error that caused the request to fail
29
- */
30
- readonly originalError: TOriginalError;
31
- constructor(
32
- /**
33
- * The message of the error
34
- */
35
- message: string,
36
- /**
37
- * The URL of the request.
38
- */
39
- url: string,
16
+ readonly retryStrategyOptions?: Required<RetryStrategyOptions>;
40
17
  /**
41
18
  * The number of times the request has been retried.
42
19
  */
43
- retryAttempt: number,
44
- /**
45
- * The retry strategy options used for the request.
46
- */
47
- retryStrategyOptions: Required<RetryStrategyOptions>,
48
- /**
49
- * The headers of the request.
50
- */
51
- requestHeaders: readonly Header[],
20
+ readonly retryAttempt?: number;
52
21
  /**
53
22
  * The original error that caused the request to fail
54
23
  */
55
- originalError: TOriginalError);
56
- }
57
- /**
58
- * Represent an error that is thrown by the HTTP service when parsing the URL or body data failed
59
- */
60
- export declare class HttpServiceParsingError extends Error {
61
- readonly message: string;
62
- constructor(message: string);
63
- }
64
- /**
65
- * Represent an error that is thrown by the HTTP service when the response is not valid
66
- */
67
- export declare class HttpServiceInvalidResponseError<TStatusCode extends HttpServiceStatus = HttpServiceStatus> extends Error {
68
- readonly kontentErrorResponse: KontentErrorResponseData | undefined;
69
- readonly adapterResponse: AdapterResponse<TStatusCode>;
70
- constructor(data: {
71
- readonly adapterResponse: AdapterResponse<TStatusCode>;
72
- readonly kontentErrorData: KontentErrorResponseData | undefined;
73
- });
74
- }
24
+ readonly details: SdkErrorDetails<'invalidResponse', {
25
+ readonly kontentErrorResponse: KontentErrorResponseData | undefined;
26
+ } & Pick<AdapterResponse<HttpServiceStatus>, 'isValidResponse' | 'responseHeaders' | 'status' | 'statusText'>> | SdkErrorDetails<'invalidBody', {
27
+ readonly error: unknown;
28
+ }> | SdkErrorDetails<'invalidUrl', {
29
+ readonly error: unknown;
30
+ }> | SdkErrorDetails<'unknown', {
31
+ readonly error: unknown;
32
+ }>;
33
+ };
34
+ type SdkErrorDetails<TType extends ErrorType, TDetails> = {
35
+ readonly type: TType;
36
+ } & TDetails;
37
+ export {};
@@ -1,67 +1,2 @@
1
- /**
2
- * Represent an error that is thrown by the SDK
3
- */
4
- export class CoreSdkError extends Error {
5
- message;
6
- url;
7
- retryAttempt;
8
- retryStrategyOptions;
9
- requestHeaders;
10
- originalError;
11
- constructor(
12
- /**
13
- * The message of the error
14
- */
15
- message,
16
- /**
17
- * The URL of the request.
18
- */
19
- url,
20
- /**
21
- * The number of times the request has been retried.
22
- */
23
- retryAttempt,
24
- /**
25
- * The retry strategy options used for the request.
26
- */
27
- retryStrategyOptions,
28
- /**
29
- * The headers of the request.
30
- */
31
- requestHeaders,
32
- /**
33
- * The original error that caused the request to fail
34
- */
35
- originalError) {
36
- super(message);
37
- this.message = message;
38
- this.url = url;
39
- this.retryAttempt = retryAttempt;
40
- this.retryStrategyOptions = retryStrategyOptions;
41
- this.requestHeaders = requestHeaders;
42
- this.originalError = originalError;
43
- }
44
- }
45
- /**
46
- * Represent an error that is thrown by the HTTP service when parsing the URL or body data failed
47
- */
48
- export class HttpServiceParsingError extends Error {
49
- message;
50
- constructor(message) {
51
- super(message);
52
- this.message = message;
53
- }
54
- }
55
- /**
56
- * Represent an error that is thrown by the HTTP service when the response is not valid
57
- */
58
- export class HttpServiceInvalidResponseError extends Error {
59
- kontentErrorResponse;
60
- adapterResponse;
61
- constructor(data) {
62
- super(`Invalid response from HTTP service with status ${data.adapterResponse.status}: ${data.adapterResponse.statusText}`);
63
- this.kontentErrorResponse = data.kontentErrorData;
64
- this.adapterResponse = data.adapterResponse;
65
- }
66
- }
1
+ export {};
67
2
  //# sourceMappingURL=error.models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.models.js","sourceRoot":"","sources":["../../lib/models/error.models.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,YAAmH,SAAQ,KAAK;IAKlI;IAKA;IAKA;IAKA;IAKA;IAKA;IA7BV;IACC;;OAEG;IACM,OAAe;IAExB;;OAEG;IACM,GAAW;IAEpB;;OAEG;IACM,YAAoB;IAE7B;;OAEG;IACM,oBAAoD;IAE7D;;OAEG;IACM,cAAiC;IAE1C;;OAEG;IACM,aAA6B;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAC;QA3BN,YAAO,GAAP,OAAO,CAAQ;QAKf,QAAG,GAAH,GAAG,CAAQ;QAKX,iBAAY,GAAZ,YAAY,CAAQ;QAKpB,yBAAoB,GAApB,oBAAoB,CAAgC;QAKpD,mBAAc,GAAd,cAAc,CAAmB;QAKjC,kBAAa,GAAb,aAAa,CAAgB;IAGvC,CAAC;CACD;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC5B;IAArB,YAAqB,OAAe;QACnC,KAAK,CAAC,OAAO,CAAC,CAAC;QADK,YAAO,GAAP,OAAO,CAAQ;IAEpC,CAAC;CACD;AAED;;GAEG;AACH,MAAM,OAAO,+BAA2F,SAAQ,KAAK;IAC3G,oBAAoB,CAAuC;IAC3D,eAAe,CAA+B;IAEvD,YAAY,IAGX;QACA,KAAK,CAAC,kDAAkD,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;QAE3H,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IAC7C,CAAC;CACD"}
1
+ {"version":3,"file":"error.models.js","sourceRoot":"","sources":["../../lib/models/error.models.ts"],"names":[],"mappings":""}
@@ -2,9 +2,8 @@ export { getDefaultHttpAdapter } from './http/http.adapter.js';
2
2
  export type { AdapterRequestOptions, AdapterResponse, DefaultHttpServiceConfig, DownloadFileRequestOptions, ExecuteRequestOptions, HttpAdapter, HttpResponse, HttpService, HttpServiceStatus, UploadFileRequestOptions, } from './http/http.models.js';
3
3
  export { getDefaultHttpService } from './http/http.service.js';
4
4
  export type { Header, HttpMethod, RetryStrategyOptions, SDKInfo, } from './models/core.models.js';
5
- export { CoreSdkError, HttpServiceInvalidResponseError, HttpServiceParsingError, } from './models/error.models.js';
5
+ export { CoreSdkError, ErrorType, } from './models/error.models.js';
6
6
  export type { JsonArray, JsonObject, JsonValue } from './models/json.models.js';
7
- export { isCoreSdkError, isCoreSdkInvalidResponseError, isCoreSdkParsingError, isKontent404Error } from './utils/error.utils.js';
8
7
  export { getSdkIdHeader } from './utils/header.utils.js';
9
8
  export { toRequiredRetryStrategyOptions } from './utils/retry.utils.js';
10
9
  export { tryCatch, tryCatchAsync } from './utils/try.utils.js';
@@ -3,8 +3,6 @@
3
3
  */
4
4
  export { getDefaultHttpAdapter } from './http/http.adapter.js';
5
5
  export { getDefaultHttpService } from './http/http.service.js';
6
- export { CoreSdkError, HttpServiceInvalidResponseError, HttpServiceParsingError, } from './models/error.models.js';
7
- export { isCoreSdkError, isCoreSdkInvalidResponseError, isCoreSdkParsingError, isKontent404Error } from './utils/error.utils.js';
8
6
  export { getSdkIdHeader } from './utils/header.utils.js';
9
7
  export { toRequiredRetryStrategyOptions } from './utils/retry.utils.js';
10
8
  export { tryCatch, tryCatchAsync } from './utils/try.utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"public_api.js","sourceRoot":"","sources":["../lib/public_api.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAa/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAO/D,OAAO,EACN,YAAY,EACZ,+BAA+B,EAC/B,uBAAuB,GACvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACjI,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"public_api.js","sourceRoot":"","sources":["../lib/public_api.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAa/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAY/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/sdk-info.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export const sdkInfo = {
2
2
  host: 'npmjs.com',
3
- version: '11.0.0-3',
3
+ version: '11.0.0-4',
4
4
  name: '@kontent-ai/core-sdk',
5
5
  };
6
6
  //# sourceMappingURL=sdk-info.js.map
@@ -1,14 +1,8 @@
1
- import type { HttpMethod } from '../models/core.models.js';
2
- import { CoreSdkError, HttpServiceInvalidResponseError, HttpServiceParsingError } from '../models/error.models.js';
3
- export declare function getDefaultErrorMessage({ method, url, retryAttempts, error, }: {
1
+ import type { AdapterResponse } from '../http/http.models.js';
2
+ import type { HttpMethod, KontentErrorResponseData } from '../models/core.models.js';
3
+ export declare function getDefaultErrorMessage({ method, url, adapterResponse, kontentErrorResponse, }: {
4
4
  readonly url: string;
5
- readonly retryAttempts: number;
6
- readonly error: unknown;
7
5
  readonly method: HttpMethod;
6
+ readonly adapterResponse: AdapterResponse;
7
+ readonly kontentErrorResponse?: KontentErrorResponseData;
8
8
  }): string;
9
- export declare function isCoreSdkError(error: unknown): error is CoreSdkError;
10
- export declare function isCoreSdkInvalidResponseError(error: unknown): error is CoreSdkError<HttpServiceInvalidResponseError>;
11
- export declare function isCoreSdkParsingError(error: unknown): error is CoreSdkError<HttpServiceParsingError>;
12
- export declare function isKontent404Error(error: unknown): error is CoreSdkError<HttpServiceInvalidResponseError<404>>;
13
- export declare function isInvalidResponseError(error: unknown): error is HttpServiceInvalidResponseError;
14
- export declare function isParsingError(error: unknown): error is HttpServiceParsingError;
@@ -1,26 +1,7 @@
1
- import { CoreSdkError, HttpServiceInvalidResponseError, HttpServiceParsingError } from '../models/error.models.js';
2
1
  import { isNotUndefined } from './core.utils.js';
3
- export function getDefaultErrorMessage({ method, url, retryAttempts, error, }) {
4
- const errorMessage = extractMessageFromError(error);
5
- return `Failed to execute '${method}' request '${url}' after '${retryAttempts}' attempts.${errorMessage ? ` ${errorMessage}` : ''}`;
6
- }
7
- export function isCoreSdkError(error) {
8
- return error instanceof CoreSdkError;
9
- }
10
- export function isCoreSdkInvalidResponseError(error) {
11
- return isCoreSdkError(error) && isInvalidResponseError(error.originalError);
12
- }
13
- export function isCoreSdkParsingError(error) {
14
- return isCoreSdkError(error) && isParsingError(error.originalError);
15
- }
16
- export function isKontent404Error(error) {
17
- return isCoreSdkInvalidResponseError(error) && error.originalError.adapterResponse.status === 404;
18
- }
19
- export function isInvalidResponseError(error) {
20
- return error instanceof HttpServiceInvalidResponseError;
21
- }
22
- export function isParsingError(error) {
23
- return error instanceof HttpServiceParsingError;
2
+ export function getDefaultErrorMessage({ method, url, adapterResponse, kontentErrorResponse, }) {
3
+ const errorMessage = extractMessageFromError(adapterResponse, kontentErrorResponse);
4
+ return `Failed to execute '${method}' request '${url}'.${errorMessage ? ` ${errorMessage}` : ''}`;
24
5
  }
25
6
  function getValidationErrorMessage(validationErrors) {
26
7
  if (!validationErrors || !validationErrors.length) {
@@ -37,16 +18,10 @@ function getValidationErrorMessage(validationErrors) {
37
18
  })
38
19
  .join(', ');
39
20
  }
40
- function extractMessageFromError(error) {
41
- if (isParsingError(error)) {
42
- return error.message;
43
- }
44
- if (isInvalidResponseError(error)) {
45
- const validationErrorMessage = getValidationErrorMessage(error.kontentErrorResponse?.validation_errors);
46
- return `Response failed with status '${error.adapterResponse.status}' and status text '${error.adapterResponse.statusText}'.${error.kontentErrorResponse ? ` ${error.kontentErrorResponse.message}` : ''}${validationErrorMessage ? ` ${validationErrorMessage}` : ''}`;
47
- }
48
- if (error instanceof Error) {
49
- return error.message;
21
+ function extractMessageFromError(adapterResponse, kontentErrorResponse) {
22
+ if (kontentErrorResponse) {
23
+ const validationErrorMessage = getValidationErrorMessage(kontentErrorResponse.validation_errors);
24
+ return `Response failed with status '${adapterResponse.status}' and status text '${adapterResponse.statusText}'.${kontentErrorResponse ? ` ${kontentErrorResponse.message}` : ''}${validationErrorMessage ? ` ${validationErrorMessage}` : ''}`;
50
25
  }
51
26
  return undefined;
52
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"error.utils.js","sourceRoot":"","sources":["../../lib/utils/error.utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error.utils.js","sourceRoot":"","sources":["../../lib/utils/error.utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,UAAU,sBAAsB,CAAC,EACtC,MAAM,EACN,GAAG,EACH,eAAe,EACf,oBAAoB,GAMpB;IACA,MAAM,YAAY,GAAG,uBAAuB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IACpF,OAAO,sBAAsB,MAAM,cAAc,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnG,CAAC;AAED,SAAS,yBAAyB,CAAC,gBAAoD;IACtF,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,gBAAgB;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACV,MAAM,OAAO,GAAsB;YAClC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YACtC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YACtC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;SAClD,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1E,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,eAAgC,EAAE,oBAA+C;IACjH,IAAI,oBAAoB,EAAE,CAAC;QAC1B,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QACjG,OAAO,gCAAgC,eAAe,CAAC,MAAM,sBAAsB,eAAe,CAAC,UAAU,KAAK,oBAAoB,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,sBAAsB,CAAC,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjP,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -1,11 +1,13 @@
1
+ import type { HttpResponse } from '../http/http.models.js';
1
2
  import type { Header, HttpMethod, RetryStrategyOptions } from '../models/core.models.js';
2
- export declare function runWithRetryAsync<TResult>(data: {
3
- readonly funcAsync: () => Promise<TResult>;
3
+ import type { JsonValue } from '../models/json.models.js';
4
+ export declare function runWithRetryAsync<TResponse extends JsonValue | Blob, TBodyData extends JsonValue | Blob>(data: {
5
+ readonly funcAsync: () => Promise<HttpResponse<TResponse, TBodyData>>;
4
6
  readonly retryStrategyOptions: Required<RetryStrategyOptions>;
5
7
  readonly retryAttempt: number;
6
8
  readonly url: string;
7
9
  readonly requestHeaders: readonly Header[];
8
10
  readonly method: HttpMethod;
9
- }): Promise<TResult>;
11
+ }): Promise<HttpResponse<TResponse, TBodyData>>;
10
12
  export declare function toRequiredRetryStrategyOptions(options?: RetryStrategyOptions): Required<RetryStrategyOptions>;
11
13
  export declare function getDefaultRetryAttemptLogMessage(retryAttempt: number, maxAttempts: number, url: string): string;
@@ -1,42 +1,39 @@
1
- import { CoreSdkError } from '../models/error.models.js';
2
- import { getDefaultErrorMessage, isCoreSdkError, isInvalidResponseError, isParsingError } from './error.utils.js';
3
1
  import { getRetryAfterHeaderValue } from './header.utils.js';
4
- import { tryCatchAsync } from './try.utils.js';
5
2
  const defaultMaxAttempts = 3;
6
3
  const defaultDelayBetweenAttemptsMs = 1000;
7
4
  const defaultCanRetryError = (error) => {
8
- if (isInvalidResponseError(error)) {
9
- if (error.kontentErrorResponse) {
5
+ if (error.details.type === 'invalidResponse') {
6
+ if (error.details.kontentErrorResponse) {
10
7
  // The request is clearly invalid as we got an error response from the API
11
8
  return false;
12
9
  }
13
- return error.adapterResponse.status >= 500 || error.adapterResponse.status === 429;
14
- }
15
- if (isParsingError(error)) {
16
- return false;
10
+ return error.details.status >= 500 || error.details.status === 429;
17
11
  }
18
12
  return true;
19
13
  };
20
14
  export async function runWithRetryAsync(data) {
21
- const { success, data: result, error } = await tryCatchAsync(data.funcAsync);
15
+ const { success, data: result, error } = await data.funcAsync();
22
16
  if (success) {
23
- return result;
17
+ return {
18
+ success: true,
19
+ data: result,
20
+ };
24
21
  }
25
22
  const newRetryAttempt = data.retryAttempt + 1;
26
23
  const retryResult = getRetryResult({
27
- error: isCoreSdkError(error) ? error.originalError : error,
28
- responseHeaders: isInvalidResponseError(error) ? error.adapterResponse.responseHeaders : [],
24
+ error,
29
25
  retryAttempt: data.retryAttempt,
30
26
  options: data.retryStrategyOptions,
31
27
  });
32
28
  if (!retryResult.canRetry) {
33
- const errorMessage = getDefaultErrorMessage({
34
- url: data.url,
35
- retryAttempts: data.retryAttempt,
36
- error: error,
37
- method: data.method,
38
- });
39
- throw new CoreSdkError(errorMessage, data.url, data.retryAttempt, data.retryStrategyOptions, data.requestHeaders, isCoreSdkError(error) ? error.originalError : error);
29
+ return {
30
+ success: false,
31
+ error: {
32
+ ...error,
33
+ retryAttempt: data.retryAttempt,
34
+ retryStrategyOptions: data.retryStrategyOptions,
35
+ },
36
+ };
40
37
  }
41
38
  logRetryAttempt(data.retryStrategyOptions, newRetryAttempt, data.url);
42
39
  await waitAsync(retryResult.retryInMs);
@@ -78,7 +75,7 @@ function logRetryAttempt(opts, retryAttempt, url) {
78
75
  function waitAsync(ms) {
79
76
  return new Promise((resolve) => setTimeout(resolve, ms));
80
77
  }
81
- function getRetryResult({ retryAttempt, error, options, responseHeaders, }) {
78
+ function getRetryResult({ retryAttempt, error, options, }) {
82
79
  if (retryAttempt >= options.maxAttempts) {
83
80
  return {
84
81
  canRetry: false,
@@ -89,10 +86,15 @@ function getRetryResult({ retryAttempt, error, options, responseHeaders, }) {
89
86
  canRetry: false,
90
87
  };
91
88
  }
92
- return getRetryFromHeader({ options, responseHeaders });
89
+ return getRetryFromHeader({ options, error });
93
90
  }
94
- function getRetryFromHeader({ options, responseHeaders, }) {
95
- const retryAfterHeaderValue = getRetryAfterHeaderValue(responseHeaders);
91
+ function getRetryFromHeader({ options, error }) {
92
+ if (error.details.type !== 'invalidResponse') {
93
+ return {
94
+ canRetry: false,
95
+ };
96
+ }
97
+ const retryAfterHeaderValue = getRetryAfterHeaderValue(error.details.responseHeaders);
96
98
  if (retryAfterHeaderValue) {
97
99
  return {
98
100
  canRetry: true,