@kontent-ai/core-sdk 12.0.0-preview.2 β 12.0.0-preview.21
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/.npmignore +1 -5
- package/LICENSE.md +1 -1
- package/README.md +177 -12
- package/dist/core-sdk-info.d.ts +2 -0
- package/dist/core-sdk-info.js +6 -0
- package/dist/core-sdk-info.js.map +1 -0
- package/dist/devkit/console.utils.d.ts +2 -0
- package/dist/devkit/console.utils.js +5 -0
- package/dist/devkit/console.utils.js.map +1 -0
- package/dist/devkit/environment.utils.d.ts +2 -0
- package/dist/devkit/environment.utils.js +12 -0
- package/dist/devkit/environment.utils.js.map +1 -0
- package/dist/devkit/script.utils.js +3 -3
- package/dist/devkit/script.utils.js.map +1 -1
- package/dist/devkit_api.d.ts +3 -0
- package/dist/devkit_api.js +3 -1
- package/dist/devkit_api.js.map +1 -1
- package/dist/http/http.adapter.d.ts +1 -1
- package/dist/http/http.adapter.js +78 -24
- package/dist/http/http.adapter.js.map +1 -1
- package/dist/http/http.models.d.ts +42 -32
- package/dist/http/http.service.js +294 -220
- package/dist/http/http.service.js.map +1 -1
- package/dist/models/core.models.d.ts +34 -29
- package/dist/models/error.models.d.ts +48 -27
- package/dist/models/error.models.js +40 -1
- package/dist/models/error.models.js.map +1 -1
- package/dist/models/json.models.d.ts +13 -4
- package/dist/models/json.models.js +10 -1
- package/dist/models/json.models.js.map +1 -1
- package/dist/models/utility.types.d.ts +16 -0
- package/dist/models/utility.types.js +2 -0
- package/dist/models/utility.types.js.map +1 -0
- package/dist/public_api.d.ts +19 -11
- package/dist/public_api.js +15 -6
- package/dist/public_api.js.map +1 -1
- package/dist/sdk/queries/fetch-sdk-query.d.ts +7 -0
- package/dist/sdk/queries/fetch-sdk-query.js +24 -0
- package/dist/sdk/queries/fetch-sdk-query.js.map +1 -0
- package/dist/sdk/queries/mutation-sdk-query.d.ts +4 -0
- package/dist/sdk/queries/mutation-sdk-query.js +17 -0
- package/dist/sdk/queries/mutation-sdk-query.js.map +1 -0
- package/dist/sdk/queries/paged-fetch-sdk-query.d.ts +6 -0
- package/dist/sdk/queries/paged-fetch-sdk-query.js +145 -0
- package/dist/sdk/queries/paged-fetch-sdk-query.js.map +1 -0
- package/dist/sdk/resolve-query.d.ts +8 -0
- package/dist/sdk/resolve-query.js +108 -0
- package/dist/sdk/resolve-query.js.map +1 -0
- package/dist/sdk/sdk-config.d.ts +3 -0
- package/dist/sdk/sdk-config.js +4 -0
- package/dist/sdk/sdk-config.js.map +1 -0
- package/dist/sdk/sdk-models.d.ts +101 -36
- package/dist/sdk/sdk-utils.d.ts +2 -0
- package/dist/sdk/sdk-utils.js +9 -0
- package/dist/sdk/sdk-utils.js.map +1 -0
- package/dist/testkit/poll.utils.d.ts +5 -0
- package/dist/testkit/poll.utils.js +24 -0
- package/dist/testkit/poll.utils.js.map +1 -0
- package/dist/testkit/testkit.utils.d.ts +20 -0
- package/dist/testkit/testkit.utils.js +100 -0
- package/dist/testkit/testkit.utils.js.map +1 -0
- package/dist/testkit_api.d.ts +3 -1
- package/dist/testkit_api.js +3 -2
- package/dist/testkit_api.js.map +1 -1
- package/dist/utils/abort.utils.d.ts +12 -0
- package/dist/utils/abort.utils.js +29 -0
- package/dist/utils/abort.utils.js.map +1 -0
- package/dist/utils/core.utils.d.ts +3 -1
- package/dist/utils/core.utils.js +22 -2
- package/dist/utils/core.utils.js.map +1 -1
- package/dist/utils/error.utils.d.ts +18 -7
- package/dist/utils/error.utils.js +35 -7
- package/dist/utils/error.utils.js.map +1 -1
- package/dist/utils/header.utils.d.ts +6 -1
- package/dist/utils/header.utils.js +37 -6
- package/dist/utils/header.utils.js.map +1 -1
- package/dist/utils/retry.utils.d.ts +16 -11
- package/dist/utils/retry.utils.js +131 -63
- package/dist/utils/retry.utils.js.map +1 -1
- package/dist/utils/sdk-version.utils.js +2 -2
- package/dist/utils/sdk-version.utils.js.map +1 -1
- package/dist/utils/try-catch.utils.d.ts +15 -0
- package/dist/utils/{try.utils.js β try-catch.utils.js} +1 -1
- package/dist/utils/try-catch.utils.js.map +1 -0
- package/dist/utils/type.utils.d.ts +2 -0
- package/dist/utils/type.utils.js +5 -0
- package/dist/utils/type.utils.js.map +1 -0
- package/dist/utils/url.utils.d.ts +5 -0
- package/dist/utils/url.utils.js +10 -0
- package/dist/utils/url.utils.js.map +1 -0
- package/package.json +61 -64
- package/dist/models/utility.models.d.ts +0 -20
- package/dist/models/utility.models.js +0 -2
- package/dist/models/utility.models.js.map +0 -1
- package/dist/sdk/sdk-queries.d.ts +0 -30
- package/dist/sdk/sdk-queries.js +0 -152
- package/dist/sdk/sdk-queries.js.map +0 -1
- package/dist/sdk-info.d.ts +0 -5
- package/dist/sdk-info.js +0 -6
- package/dist/sdk-info.js.map +0 -1
- package/dist/testkit/test.utils.d.ts +0 -15
- package/dist/testkit/test.utils.js +0 -42
- package/dist/testkit/test.utils.js.map +0 -1
- package/dist/utils/try.utils.d.ts +0 -14
- package/dist/utils/try.utils.js.map +0 -1
- package/lib/devkit/script.utils.ts +0 -12
- package/lib/devkit_api.ts +0 -3
- package/lib/http/http.adapter.ts +0 -38
- package/lib/http/http.models.ts +0 -122
- package/lib/http/http.service.ts +0 -320
- package/lib/models/core.models.ts +0 -89
- package/lib/models/error.models.ts +0 -83
- package/lib/models/json.models.ts +0 -9
- package/lib/models/utility.models.ts +0 -21
- package/lib/public_api.ts +0 -45
- package/lib/sdk/sdk-models.ts +0 -85
- package/lib/sdk/sdk-queries.ts +0 -232
- package/lib/sdk-info.ts +0 -5
- package/lib/testkit/test.utils.ts +0 -79
- package/lib/testkit/testkit.models.ts +0 -7
- package/lib/testkit_api.ts +0 -3
- package/lib/utils/core.utils.ts +0 -3
- package/lib/utils/error.utils.ts +0 -48
- package/lib/utils/header.utils.ts +0 -40
- package/lib/utils/retry.utils.ts +0 -156
- package/lib/utils/sdk-version.utils.ts +0 -16
- package/lib/utils/try.utils.ts +0 -30
|
@@ -1,13 +1,41 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AdapterAbortError, AdapterParseError, KontentSdkError } from "../models/error.models.js";
|
|
2
|
+
import { isDefined } from "./core.utils.js";
|
|
3
|
+
export function createSdkError({ baseErrorData, details, }) {
|
|
4
|
+
return new KontentSdkError({
|
|
5
|
+
baseErrorData,
|
|
6
|
+
details,
|
|
7
|
+
});
|
|
8
|
+
}
|
|
2
9
|
export function isKontent404Error(error) {
|
|
3
|
-
return
|
|
10
|
+
return isKontentSdkError(error) && error.details.reason === "notFound";
|
|
11
|
+
}
|
|
12
|
+
export function isKontentSdkError(error) {
|
|
13
|
+
return error instanceof KontentSdkError;
|
|
14
|
+
}
|
|
15
|
+
export function isAdapterParseError(error) {
|
|
16
|
+
return error instanceof AdapterParseError;
|
|
4
17
|
}
|
|
5
|
-
export function
|
|
18
|
+
export function isAdapterAbortError(error) {
|
|
19
|
+
return error instanceof AdapterAbortError;
|
|
20
|
+
}
|
|
21
|
+
export function toInvalidResponseMessage({ method, url, adapterResponse, kontentErrorResponse, }) {
|
|
6
22
|
const details = kontentErrorResponse ? getKontentErrorResponseMessage(adapterResponse, kontentErrorResponse) : undefined;
|
|
7
23
|
return `Failed to execute '${method}' request '${url}'.${details ? ` ${details}` : ""}`;
|
|
8
24
|
}
|
|
9
|
-
|
|
10
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Checks if the given JSON value is a Kontent API error response data.
|
|
27
|
+
*/
|
|
28
|
+
export function isKontentErrorResponseData(json) {
|
|
29
|
+
if (!json) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (json instanceof Object &&
|
|
33
|
+
"message" in json &&
|
|
34
|
+
"request_id" in json &&
|
|
35
|
+
"error_code" in json) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
11
39
|
}
|
|
12
40
|
function getValidationErrorMessage(validationErrors) {
|
|
13
41
|
if (!validationErrors?.length) {
|
|
@@ -19,13 +47,13 @@ function getValidationErrorMessage(validationErrors) {
|
|
|
19
47
|
m.path ? `path: ${m.path}` : undefined,
|
|
20
48
|
m.line ? `line: ${m.line}` : undefined,
|
|
21
49
|
m.position ? `position: ${m.position}` : undefined,
|
|
22
|
-
].filter(
|
|
50
|
+
].filter(isDefined);
|
|
23
51
|
return `${m.message}${details.length ? ` (${details.join(", ")})` : ""}`;
|
|
24
52
|
})
|
|
25
53
|
.join(", ");
|
|
26
54
|
}
|
|
27
55
|
function getKontentErrorResponseMessage(adapterResponse, kontentErrorResponse) {
|
|
28
56
|
const validationErrorMessage = getValidationErrorMessage(kontentErrorResponse.validation_errors);
|
|
29
|
-
return `
|
|
57
|
+
return `Request failed with status '${adapterResponse.status}' and status text '${adapterResponse.statusText}'.${kontentErrorResponse.message}${validationErrorMessage ? ` ${validationErrorMessage}` : ""}`;
|
|
30
58
|
}
|
|
31
59
|
//# sourceMappingURL=error.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.utils.js","sourceRoot":"","sources":["../../lib/utils/error.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"error.utils.js","sourceRoot":"","sources":["../../lib/utils/error.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import type { Header, SDKInfo } from "../models/core.models.js";
|
|
1
|
+
import type { CommonHeaderNames, Header, SDKInfo } from "../models/core.models.js";
|
|
2
2
|
export declare function getSdkIdHeader(info: SDKInfo): Header;
|
|
3
|
+
export declare function createContinuationHeader(token: string): Header;
|
|
4
|
+
export declare function createAuthorizationHeader(apiKey: string): Header;
|
|
5
|
+
export declare function findHeaderByName(headers: readonly Header[], name: CommonHeaderNames): Header | undefined;
|
|
3
6
|
export declare function getRetryAfterHeaderValue(headers: readonly Header[]): number | undefined;
|
|
4
7
|
export declare function toSdkHeaders(headers: Headers): readonly Header[];
|
|
5
8
|
export declare function toFetchHeaders(headers: readonly Header[]): Headers;
|
|
9
|
+
export declare function isApplicationJsonResponseType(headers: readonly Header[]): boolean;
|
|
10
|
+
export declare function extractContinuationToken(responseHeaders: readonly Header[]): string | undefined;
|
|
@@ -4,16 +4,27 @@ export function getSdkIdHeader(info) {
|
|
|
4
4
|
value: `${info.host};${info.name};${info.version}`,
|
|
5
5
|
};
|
|
6
6
|
}
|
|
7
|
+
export function createContinuationHeader(token) {
|
|
8
|
+
return {
|
|
9
|
+
name: "X-Continuation",
|
|
10
|
+
value: token,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function createAuthorizationHeader(apiKey) {
|
|
14
|
+
return {
|
|
15
|
+
name: "Authorization",
|
|
16
|
+
value: `Bearer ${apiKey}`,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function findHeaderByName(headers, name) {
|
|
20
|
+
return headers.find((header) => header.name.toLowerCase() === name.toLowerCase());
|
|
21
|
+
}
|
|
7
22
|
export function getRetryAfterHeaderValue(headers) {
|
|
8
|
-
const retryAfterHeader = headers
|
|
23
|
+
const retryAfterHeader = findHeaderByName(headers, "Retry-After");
|
|
9
24
|
if (!retryAfterHeader) {
|
|
10
25
|
return undefined;
|
|
11
26
|
}
|
|
12
|
-
|
|
13
|
-
if (!Number.isSafeInteger(numberValue)) {
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
return numberValue;
|
|
27
|
+
return getNumericRetryAfterHeaderValue(retryAfterHeader.value) ?? getDateRetryAfterHeaderValue(retryAfterHeader.value);
|
|
17
28
|
}
|
|
18
29
|
export function toSdkHeaders(headers) {
|
|
19
30
|
return Array.from(headers.entries()).map(([key, value]) => ({
|
|
@@ -27,4 +38,24 @@ export function toFetchHeaders(headers) {
|
|
|
27
38
|
return headers;
|
|
28
39
|
}, new Headers());
|
|
29
40
|
}
|
|
41
|
+
export function isApplicationJsonResponseType(headers) {
|
|
42
|
+
return findHeaderByName(headers, "Content-Type")?.value.toLowerCase().includes("application/json") ?? false;
|
|
43
|
+
}
|
|
44
|
+
export function extractContinuationToken(responseHeaders) {
|
|
45
|
+
return findHeaderByName(responseHeaders, "X-Continuation")?.value;
|
|
46
|
+
}
|
|
47
|
+
function getNumericRetryAfterHeaderValue(retryAfterValue) {
|
|
48
|
+
const parsedNumber = +retryAfterValue;
|
|
49
|
+
if (Number.isSafeInteger(parsedNumber)) {
|
|
50
|
+
return parsedNumber;
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
function getDateRetryAfterHeaderValue(retryAfterValue) {
|
|
55
|
+
const retryAfterDate = Date.parse(retryAfterValue);
|
|
56
|
+
if (Number.isNaN(retryAfterDate)) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
return Math.max(0, Math.ceil((retryAfterDate - Date.now()) / 1000));
|
|
60
|
+
}
|
|
30
61
|
//# sourceMappingURL=header.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.utils.js","sourceRoot":"","sources":["../../lib/utils/header.utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,IAAa;IAC3C,OAAO;QACN,IAAI,EAAE,YAAwC;QAC9C,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;KAClD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"header.utils.js","sourceRoot":"","sources":["../../lib/utils/header.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import type { HttpResponse } from "../http/http.models.js";
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import type { HttpPayload, HttpRequestBody, HttpResponse } from "../http/http.models.js";
|
|
2
|
+
import type { ResolvedRetryStrategyOptions, RetryStrategyOptions } from "../models/core.models.js";
|
|
3
|
+
type WaitResult = {
|
|
4
|
+
readonly isAborted: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function runWithRetry<TResponse extends HttpPayload, TRequestBody extends HttpRequestBody>(data: {
|
|
7
|
+
readonly func: (retryAttempt: number) => Promise<HttpResponse<TResponse, TRequestBody>>;
|
|
8
|
+
readonly retryStrategyOptions: ResolvedRetryStrategyOptions;
|
|
7
9
|
readonly retryAttempt: number;
|
|
8
10
|
readonly url: string;
|
|
9
|
-
readonly
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export declare function
|
|
13
|
-
|
|
11
|
+
readonly abortSignal: AbortSignal | undefined;
|
|
12
|
+
}): Promise<HttpResponse<TResponse, TRequestBody>>;
|
|
13
|
+
export declare function resolveDefaultRetryStrategyOptions(options?: RetryStrategyOptions): ResolvedRetryStrategyOptions;
|
|
14
|
+
export declare function waitBeforeNextRetry({ retryInMs, abortSignal, }: {
|
|
15
|
+
readonly retryInMs: number;
|
|
16
|
+
readonly abortSignal?: AbortSignal | undefined;
|
|
17
|
+
}): Promise<WaitResult>;
|
|
18
|
+
export {};
|
|
@@ -1,23 +1,14 @@
|
|
|
1
|
+
import { match, P } from "ts-pattern";
|
|
2
|
+
import { runWithAbortSignal } from "./abort.utils.js";
|
|
3
|
+
import { sleep } from "./core.utils.js";
|
|
4
|
+
import { createSdkError } from "./error.utils.js";
|
|
1
5
|
import { getRetryAfterHeaderValue } from "./header.utils.js";
|
|
2
6
|
const defaultMaxRetries = 3;
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
return getRetryFromHeaderMs({ error });
|
|
6
|
-
}
|
|
7
|
-
return 0;
|
|
8
|
-
};
|
|
9
|
-
const defaultCanRetryError = (error) => {
|
|
10
|
-
if (error.reason === "invalidResponse") {
|
|
11
|
-
if (error.kontentErrorResponse) {
|
|
12
|
-
// The request is clearly invalid as we got an error response from the API
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
return error.status >= 500 || error.status === 429;
|
|
16
|
-
}
|
|
17
|
-
return true;
|
|
7
|
+
const defaultCanRetryAdapterError = (_error) => {
|
|
8
|
+
return false;
|
|
18
9
|
};
|
|
19
|
-
export async function
|
|
20
|
-
const { success, response, error } = await data.
|
|
10
|
+
export async function runWithRetry(data) {
|
|
11
|
+
const { success, response, error } = await data.func(data.retryAttempt);
|
|
21
12
|
if (success) {
|
|
22
13
|
return {
|
|
23
14
|
success: true,
|
|
@@ -28,79 +19,156 @@ export async function runWithRetryAsync(data) {
|
|
|
28
19
|
const retryResult = getRetryResult({
|
|
29
20
|
error,
|
|
30
21
|
retryAttempt: data.retryAttempt,
|
|
31
|
-
|
|
22
|
+
retryStrategyOptions: data.retryStrategyOptions,
|
|
32
23
|
});
|
|
33
24
|
if (!retryResult.canRetry) {
|
|
34
25
|
return {
|
|
35
26
|
success: false,
|
|
36
|
-
error: {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
27
|
+
error: createSdkError({
|
|
28
|
+
baseErrorData: {
|
|
29
|
+
message: error.message,
|
|
30
|
+
url: error.url,
|
|
31
|
+
retryStrategyOptions: data.retryStrategyOptions,
|
|
32
|
+
retryAttempt: data.retryAttempt,
|
|
33
|
+
},
|
|
34
|
+
details: error.details,
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// wait before the next retry or if the abort signal is aborted, return the error
|
|
39
|
+
const { isAborted } = await waitBeforeNextRetry({ retryInMs: retryResult.retryInMs, abortSignal: data.abortSignal });
|
|
40
|
+
if (isAborted) {
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
error: createAbortError({ url: data.url, retryStrategyOptions: data.retryStrategyOptions, retryAttempt: data.retryAttempt }),
|
|
41
44
|
};
|
|
42
45
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return await
|
|
46
|
-
|
|
46
|
+
// log retry attempt when available
|
|
47
|
+
data.retryStrategyOptions.logRetryAttempt?.(newRetryAttempt, data.url);
|
|
48
|
+
return await runWithRetry({
|
|
49
|
+
func: data.func,
|
|
47
50
|
retryStrategyOptions: data.retryStrategyOptions,
|
|
48
51
|
retryAttempt: newRetryAttempt,
|
|
49
52
|
url: data.url,
|
|
50
|
-
|
|
51
|
-
method: data.method,
|
|
53
|
+
abortSignal: data.abortSignal,
|
|
52
54
|
});
|
|
53
55
|
}
|
|
54
|
-
export function
|
|
56
|
+
export function resolveDefaultRetryStrategyOptions(options) {
|
|
55
57
|
const maxRetries = options?.maxRetries ?? defaultMaxRetries;
|
|
56
|
-
|
|
58
|
+
const resolvedOptions = {
|
|
57
59
|
maxRetries: maxRetries,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
logRetryAttempt: options?.logRetryAttempt
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
else {
|
|
67
|
-
console.warn(getDefaultRetryAttemptLogMessage(attempt, maxRetries, url));
|
|
68
|
-
}
|
|
69
|
-
},
|
|
60
|
+
getDelayBetweenRetriesMs: (error) => getRetryMsFromHeaders({ error }),
|
|
61
|
+
canRetryAdapterError: options?.canRetryAdapterError ?? defaultCanRetryAdapterError,
|
|
62
|
+
logRetryAttempt: match(options?.logRetryAttempt)
|
|
63
|
+
.returnType()
|
|
64
|
+
.with("logToConsole", () => (retryAttempt, url) => {
|
|
65
|
+
console.warn(getDefaultRetryAttemptLogMessage(retryAttempt, maxRetries, url));
|
|
66
|
+
})
|
|
67
|
+
.otherwise((m) => m),
|
|
70
68
|
};
|
|
69
|
+
return resolvedOptions;
|
|
71
70
|
}
|
|
72
|
-
export function
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
function logRetryAttempt(opts, retryAttempt, url) {
|
|
76
|
-
if (opts.logRetryAttempt) {
|
|
77
|
-
opts.logRetryAttempt(retryAttempt, url);
|
|
71
|
+
export async function waitBeforeNextRetry({ retryInMs, abortSignal, }) {
|
|
72
|
+
if (abortSignal) {
|
|
73
|
+
return await waitBeforeNextRetryWithAbortSignal({ retryInMs, abortSignal });
|
|
78
74
|
}
|
|
79
|
-
|
|
80
|
-
function waitAsync(ms) {
|
|
81
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
82
|
-
}
|
|
83
|
-
function getRetryResult({ retryAttempt, error, options, }) {
|
|
84
|
-
if (retryAttempt >= options.maxRetries) {
|
|
75
|
+
if (retryInMs <= 0) {
|
|
85
76
|
return {
|
|
86
|
-
|
|
77
|
+
isAborted: false,
|
|
87
78
|
};
|
|
88
79
|
}
|
|
89
|
-
|
|
80
|
+
await sleep(retryInMs);
|
|
81
|
+
return {
|
|
82
|
+
isAborted: false,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function createAbortError({ url, retryStrategyOptions, retryAttempt, }) {
|
|
86
|
+
return createSdkError({
|
|
87
|
+
baseErrorData: {
|
|
88
|
+
message: "The request was aborted while waiting before the next retry attempt.",
|
|
89
|
+
url,
|
|
90
|
+
retryStrategyOptions,
|
|
91
|
+
retryAttempt,
|
|
92
|
+
},
|
|
93
|
+
details: { reason: "aborted", originalError: undefined },
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
async function waitBeforeNextRetryWithAbortSignal({ retryInMs, abortSignal, }) {
|
|
97
|
+
return await runWithAbortSignal({
|
|
98
|
+
func: async () => {
|
|
99
|
+
return await sleep(retryInMs);
|
|
100
|
+
},
|
|
101
|
+
abortSignal,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function getDefaultRetryAttemptLogMessage(retryAttempt, maxRetries, url) {
|
|
105
|
+
return `Retry attempt '${retryAttempt}' from a maximum of '${maxRetries}' retries. Requested url: '${url}'`;
|
|
106
|
+
}
|
|
107
|
+
function getRetryResult({ retryStrategyOptions, error, retryAttempt, }) {
|
|
108
|
+
if (!canRetryError({
|
|
109
|
+
retryAttempt,
|
|
110
|
+
error,
|
|
111
|
+
maxRetries: retryStrategyOptions.maxRetries,
|
|
112
|
+
canRetryAdapterError: retryStrategyOptions.canRetryAdapterError,
|
|
113
|
+
})) {
|
|
90
114
|
return {
|
|
91
115
|
canRetry: false,
|
|
92
116
|
};
|
|
93
117
|
}
|
|
94
118
|
return {
|
|
95
119
|
canRetry: true,
|
|
96
|
-
retryInMs:
|
|
120
|
+
retryInMs: retryStrategyOptions.getDelayBetweenRetriesMs(error),
|
|
97
121
|
};
|
|
98
122
|
}
|
|
99
|
-
function
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
123
|
+
function canRetryError({ retryAttempt, error, maxRetries, canRetryAdapterError, }) {
|
|
124
|
+
if (hasExceededMaxRetries({ retryAttempt, maxRetries })) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
if (isRateLimitError({ error })) {
|
|
128
|
+
return true;
|
|
103
129
|
}
|
|
104
|
-
return
|
|
130
|
+
return match(error)
|
|
131
|
+
.returnType()
|
|
132
|
+
.with({ details: { kontentErrorResponse: P.nonNullable } }, () => {
|
|
133
|
+
// The request is clearly invalid as we got an error response from the API
|
|
134
|
+
// and we should not retry such requests
|
|
135
|
+
return false;
|
|
136
|
+
})
|
|
137
|
+
.with({
|
|
138
|
+
details: {
|
|
139
|
+
reason: P.union("invalidBody", "invalidResponse", "invalidUrl", "notFound", "unauthorized", "validationFailed", "noResponses", "aborted", "parseError"),
|
|
140
|
+
},
|
|
141
|
+
}, () => false)
|
|
142
|
+
.with({ details: { reason: "adapterError" } }, (m) => {
|
|
143
|
+
if (isErrorWithReason(m, m.details.reason)) {
|
|
144
|
+
return canRetryAdapterError(m);
|
|
145
|
+
}
|
|
146
|
+
throw new Error("Failed to assert adapter error");
|
|
147
|
+
})
|
|
148
|
+
.exhaustive();
|
|
149
|
+
}
|
|
150
|
+
function isErrorWithReason(error, reason) {
|
|
151
|
+
return error.details.reason === reason;
|
|
152
|
+
}
|
|
153
|
+
function isRateLimitError({ error }) {
|
|
154
|
+
return match(error)
|
|
155
|
+
.returnType()
|
|
156
|
+
.with({ details: { status: 429 } }, () => true)
|
|
157
|
+
.otherwise(() => false);
|
|
158
|
+
}
|
|
159
|
+
function hasExceededMaxRetries({ retryAttempt, maxRetries }) {
|
|
160
|
+
return retryAttempt >= maxRetries;
|
|
161
|
+
}
|
|
162
|
+
function getRetryMsFromHeaders({ error }) {
|
|
163
|
+
return match(error)
|
|
164
|
+
.returnType()
|
|
165
|
+
.with({ details: { responseHeaders: P.nonNullable } }, (m) => {
|
|
166
|
+
const retryAfterHeaderValue = getRetryAfterHeaderValue(m.details.responseHeaders);
|
|
167
|
+
if (retryAfterHeaderValue) {
|
|
168
|
+
return retryAfterHeaderValue * 1000;
|
|
169
|
+
}
|
|
170
|
+
return 0;
|
|
171
|
+
})
|
|
172
|
+
.otherwise(() => 0);
|
|
105
173
|
}
|
|
106
174
|
//# sourceMappingURL=retry.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.utils.js","sourceRoot":"","sources":["../../lib/utils/retry.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retry.utils.js","sourceRoot":"","sources":["../../lib/utils/retry.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync } from "node:fs";
|
|
2
|
-
import
|
|
2
|
+
import { colorize } from "../devkit/console.utils.js";
|
|
3
3
|
const sdkVersionPlaceholderMacro = "{{version}}";
|
|
4
4
|
export function replaceSdkVersionPlaceholder(filePath, version) {
|
|
5
5
|
const fileContent = readFileSync(filePath, "utf8");
|
|
@@ -7,6 +7,6 @@ export function replaceSdkVersionPlaceholder(filePath, version) {
|
|
|
7
7
|
throw new Error(`File '${filePath}' does not contain macro '${sdkVersionPlaceholderMacro}'`);
|
|
8
8
|
}
|
|
9
9
|
writeFileSync(filePath, fileContent.replace(sdkVersionPlaceholderMacro, version));
|
|
10
|
-
console.log(`Updated SDK version in '${
|
|
10
|
+
console.log(`Updated SDK version in '${colorize("yellow", filePath)}' to '${colorize("green", version)}'`);
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=sdk-version.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-version.utils.js","sourceRoot":"","sources":["../../lib/utils/sdk-version.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"sdk-version.utils.js","sourceRoot":"","sources":["../../lib/utils/sdk-version.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,MAAM,0BAA0B,GAAG,aAAa,CAAC;AAEjD,MAAM,UAAU,4BAA4B,CAAC,QAAgB,EAAE,OAAe;IAC7E,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEnD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,6BAA6B,0BAA0B,GAAG,CAAC,CAAC;IAC9F,CAAC;IAED,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC,CAAC;IAElF,OAAO,CAAC,GAAG,CAAC,2BAA2B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5G,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type Success<TData> = {
|
|
2
|
+
readonly success: true;
|
|
3
|
+
readonly error?: never;
|
|
4
|
+
} & TData;
|
|
5
|
+
export type Failure<TData, TError = unknown> = {
|
|
6
|
+
readonly success: false;
|
|
7
|
+
readonly error: TError;
|
|
8
|
+
} & TData;
|
|
9
|
+
export type TryCatchResult<TData, TError = unknown> = Success<{
|
|
10
|
+
readonly data: TData;
|
|
11
|
+
}> | Failure<{
|
|
12
|
+
readonly data?: never;
|
|
13
|
+
}, TError>;
|
|
14
|
+
export declare function tryCatchAsync<T>(fn: () => Promise<T>): Promise<TryCatchResult<T>>;
|
|
15
|
+
export declare function tryCatch<T>(fn: () => T): TryCatchResult<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"try-catch.utils.js","sourceRoot":"","sources":["../../lib/utils/try-catch.utils.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,EAAoB;IAC1D,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,EAAW;IACtC,IAAI,CAAC;QACJ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.utils.js","sourceRoot":"","sources":["../../lib/utils/type.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,iBAAiB,CAAkC,SAA4C;IAC9G,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAA0B,CAAC;AACzG,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function getEndpointUrl({ environmentId, path, baseUrl, }) {
|
|
2
|
+
return `${removeTrailingSlashes(baseUrl)}${removeDuplicateSlashes(`/${environmentId}/${path}`)}`;
|
|
3
|
+
}
|
|
4
|
+
function removeDuplicateSlashes(path) {
|
|
5
|
+
return path.replace(/\/+/g, "/");
|
|
6
|
+
}
|
|
7
|
+
function removeTrailingSlashes(path) {
|
|
8
|
+
return path.replace(/\/+$/, "");
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=url.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.utils.js","sourceRoot":"","sources":["../../lib/utils/url.utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,EAC9B,aAAa,EACb,IAAI,EACJ,OAAO,GAKP;IACA,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,sBAAsB,CAAC,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AAClG,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC"}
|