@kontent-ai/core-sdk 12.0.0-preview.21 → 12.0.0-preview.23
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/README.md +0 -4
- package/dist/core-sdk-info.js +1 -1
- package/dist/devkit/environment.utils.js +1 -1
- package/dist/devkit/environment.utils.js.map +1 -1
- package/dist/{utils → devkit}/sdk-version.utils.js +1 -1
- package/dist/devkit/sdk-version.utils.js.map +1 -0
- package/dist/devkit_api.d.ts +1 -1
- package/dist/devkit_api.js +1 -1
- package/dist/devkit_api.js.map +1 -1
- package/dist/http/http.adapter.js +7 -11
- package/dist/http/http.adapter.js.map +1 -1
- package/dist/http/http.models.d.ts +6 -3
- package/dist/http/http.service.js +19 -8
- package/dist/http/http.service.js.map +1 -1
- package/dist/models/core.models.d.ts +0 -12
- package/dist/models/error.models.d.ts +33 -8
- package/dist/models/error.models.js +23 -12
- package/dist/models/error.models.js.map +1 -1
- package/dist/public_api.d.ts +2 -2
- package/dist/public_api.js.map +1 -1
- package/dist/sdk/queries/paged-fetch-sdk-query.js +16 -51
- package/dist/sdk/queries/paged-fetch-sdk-query.js.map +1 -1
- package/dist/sdk/resolve-query.js +63 -16
- package/dist/sdk/resolve-query.js.map +1 -1
- package/dist/sdk/sdk-models.d.ts +1 -6
- package/dist/sdk/sdk-utils.d.ts +4 -0
- package/dist/sdk/sdk-utils.js +4 -0
- package/dist/sdk/sdk-utils.js.map +1 -1
- package/dist/testkit/poll.utils.js +4 -13
- package/dist/testkit/poll.utils.js.map +1 -1
- package/dist/testkit/testkit.utils.d.ts +8 -1
- package/dist/testkit/testkit.utils.js +13 -0
- package/dist/testkit/testkit.utils.js.map +1 -1
- package/dist/testkit_api.d.ts +1 -1
- package/dist/testkit_api.js +1 -1
- package/dist/testkit_api.js.map +1 -1
- package/dist/utils/abort.utils.js +4 -3
- package/dist/utils/abort.utils.js.map +1 -1
- package/dist/utils/core.utils.js +1 -5
- package/dist/utils/core.utils.js.map +1 -1
- package/dist/utils/error.utils.d.ts +9 -4
- package/dist/utils/error.utils.js +22 -12
- package/dist/utils/error.utils.js.map +1 -1
- package/dist/utils/header.utils.js +8 -7
- package/dist/utils/header.utils.js.map +1 -1
- package/dist/utils/retry.utils.d.ts +1 -1
- package/dist/utils/retry.utils.js +29 -52
- package/dist/utils/retry.utils.js.map +1 -1
- package/package.json +7 -6
- package/dist/utils/sdk-version.utils.js.map +0 -1
- /package/dist/{utils → devkit}/sdk-version.utils.d.ts +0 -0
|
@@ -7,7 +7,13 @@ import { createSdkError } from "../utils/error.utils.js";
|
|
|
7
7
|
import { createAuthorizationHeader, createContinuationHeader, extractContinuationToken, getSdkIdHeader } from "../utils/header.utils.js";
|
|
8
8
|
import { tryCatch } from "../utils/try-catch.utils.js";
|
|
9
9
|
export async function resolveQuery({ config, request, mapMetadata, zodSchema, sdkInfo, method, abortSignal, mapError, }) {
|
|
10
|
-
const urlToUse
|
|
10
|
+
const { success: urlSuccess, data: urlToUse, error: urlError } = getUrlToUse(request.url, config.baseUrl);
|
|
11
|
+
if (!urlSuccess) {
|
|
12
|
+
return {
|
|
13
|
+
success: false,
|
|
14
|
+
error: mapError(urlError),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
11
17
|
const { success, response, error } = await getHttpService(config).request({
|
|
12
18
|
body: request.body,
|
|
13
19
|
url: urlToUse,
|
|
@@ -36,7 +42,7 @@ export async function resolveQuery({ config, request, mapMetadata, zodSchema, sd
|
|
|
36
42
|
}
|
|
37
43
|
}
|
|
38
44
|
const continuationTokenFromResponse = extractContinuationToken(response.adapterResponse.responseHeaders);
|
|
39
|
-
|
|
45
|
+
return {
|
|
40
46
|
success: true,
|
|
41
47
|
response: {
|
|
42
48
|
payload: response.payload,
|
|
@@ -49,27 +55,68 @@ export async function resolveQuery({ config, request, mapMetadata, zodSchema, sd
|
|
|
49
55
|
},
|
|
50
56
|
},
|
|
51
57
|
};
|
|
52
|
-
return result;
|
|
53
58
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
*/
|
|
57
|
-
function setBaseUrl(url, baseUrl) {
|
|
58
|
-
const { success, data: parsedUrl } = tryCatch(() => new URL(url));
|
|
59
|
+
function getUrlToUse(url, baseUrl) {
|
|
60
|
+
const { success, data: parsedUrl, error } = tryCatch(() => new URL(url));
|
|
59
61
|
if (!success) {
|
|
60
|
-
return
|
|
62
|
+
return {
|
|
63
|
+
success: false,
|
|
64
|
+
error: createInvalidUrlError(url, error),
|
|
65
|
+
};
|
|
61
66
|
}
|
|
67
|
+
if (baseUrl) {
|
|
68
|
+
return setBaseUrl(parsedUrl, baseUrl);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
success: true,
|
|
72
|
+
data: parsedUrl,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function createInvalidUrlError(invalidUrl, error) {
|
|
76
|
+
return createSdkError({
|
|
77
|
+
baseErrorData: {
|
|
78
|
+
message: `Failed to parse url '${invalidUrl}'`,
|
|
79
|
+
url: invalidUrl,
|
|
80
|
+
retryStrategyOptions: undefined,
|
|
81
|
+
retryAttempt: undefined,
|
|
82
|
+
},
|
|
83
|
+
details: {
|
|
84
|
+
reason: "invalidUrl",
|
|
85
|
+
originalError: error,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function setBaseUrl(url, baseUrl) {
|
|
90
|
+
const clonedUrl = new URL(url.toString());
|
|
62
91
|
if (baseUrl.startsWith("http")) {
|
|
63
|
-
const { success, data: parsedBaseUrl } = tryCatch(() => new URL(baseUrl));
|
|
92
|
+
const { success, data: parsedBaseUrl, error } = tryCatch(() => new URL(baseUrl));
|
|
64
93
|
if (!success) {
|
|
65
|
-
return
|
|
94
|
+
return {
|
|
95
|
+
success: false,
|
|
96
|
+
error: createInvalidUrlError(baseUrl, error),
|
|
97
|
+
};
|
|
66
98
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return
|
|
99
|
+
clonedUrl.host = parsedBaseUrl.host;
|
|
100
|
+
clonedUrl.protocol = parsedBaseUrl.protocol;
|
|
101
|
+
return {
|
|
102
|
+
success: true,
|
|
103
|
+
data: clonedUrl,
|
|
104
|
+
};
|
|
70
105
|
}
|
|
71
|
-
|
|
72
|
-
|
|
106
|
+
// Direct host assignment is a silent no-op for invalid values per the URL spec,
|
|
107
|
+
// so validate by constructing a full URL first.
|
|
108
|
+
const { success, data: parsedHostUrl, error } = tryCatch(() => new URL(`https://${baseUrl}`));
|
|
109
|
+
if (!success) {
|
|
110
|
+
return {
|
|
111
|
+
success: false,
|
|
112
|
+
error: createInvalidUrlError(baseUrl, error),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
clonedUrl.host = parsedHostUrl.host;
|
|
116
|
+
return {
|
|
117
|
+
success: true,
|
|
118
|
+
data: clonedUrl,
|
|
119
|
+
};
|
|
73
120
|
}
|
|
74
121
|
async function validateResponse({ url, response, zodSchema, }) {
|
|
75
122
|
const { success, error } = await zodSchema.safeParseAsync(response.payload);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-query.js","sourceRoot":"","sources":["../../lib/sdk/resolve-query.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACzI,OAAO,
|
|
1
|
+
{"version":3,"file":"resolve-query.js","sourceRoot":"","sources":["../../lib/sdk/resolve-query.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/sdk-models.d.ts
CHANGED
|
@@ -61,11 +61,6 @@ export type PagedFetchQuery<TResponsePayload, TMeta, TError> = Query<TResponsePa
|
|
|
61
61
|
pagesSafe(config?: PaginationConfig): AsyncGenerator<QueryResult<QueryResponse<TResponsePayload, TMeta>, TError>>;
|
|
62
62
|
pages(config?: PaginationConfig): AsyncGenerator<QueryResponse<TResponsePayload, TMeta>>;
|
|
63
63
|
};
|
|
64
|
-
/**
|
|
65
|
-
* Not yet implemented.
|
|
66
|
-
*
|
|
67
|
-
* @todo Implement mutation query.
|
|
68
|
-
*/
|
|
69
64
|
export type MutationQuery<TResponsePayload, TMeta, TError> = Query<TResponsePayload> & {
|
|
70
65
|
executeSafe(): Promise<QueryResult<QueryResponse<TResponsePayload, TMeta>, TError>>;
|
|
71
66
|
execute(): Promise<QueryResponse<TResponsePayload, TMeta>>;
|
|
@@ -143,5 +138,5 @@ type RequestData<TRequestBody extends HttpRequestBody> = {
|
|
|
143
138
|
readonly authorizationApiKey?: string | undefined;
|
|
144
139
|
};
|
|
145
140
|
type MutationHttpMethod = PickStringLiteral<HttpMethod, "POST" | "PUT" | "PATCH" | "DELETE">;
|
|
146
|
-
type RequestDataWithoutBody = Omit<RequestData<
|
|
141
|
+
type RequestDataWithoutBody = Omit<RequestData<null>, "body">;
|
|
147
142
|
export {};
|
package/dist/sdk/sdk-utils.d.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import type { PagedFetchQuery, Query } from "./sdk-models.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a query is a paging query.
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
2
6
|
export declare function isPagingQuery<T, TBody = null, TError = unknown>(query: Query<T> | PagedFetchQuery<T, TBody, TError>): query is PagedFetchQuery<T, TBody, TError>;
|
package/dist/sdk/sdk-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-utils.js","sourceRoot":"","sources":["../../lib/sdk/sdk-utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC5B,KAAmD;IAEnD,OAAO,CACN,WAAW,IAAI,KAAK;QACpB,eAAe,IAAI,KAAK;QACxB,eAAe,IAAI,KAAK;QACxB,mBAAmB,IAAI,KAAK;QAC5B,OAAO,IAAI,KAAK;QAChB,WAAW,IAAI,KAAK,CACpB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"sdk-utils.js","sourceRoot":"","sources":["../../lib/sdk/sdk-utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC5B,KAAmD;IAEnD,OAAO,CACN,WAAW,IAAI,KAAK;QACpB,eAAe,IAAI,KAAK;QACxB,eAAe,IAAI,KAAK;QACxB,mBAAmB,IAAI,KAAK;QAC5B,OAAO,IAAI,KAAK;QAChB,WAAW,IAAI,KAAK,CACpB,CAAC;AACH,CAAC"}
|
|
@@ -5,20 +5,11 @@ export async function poll(func, config) {
|
|
|
5
5
|
const intervalMs = config?.intervalMs ?? defaultIntervalMs;
|
|
6
6
|
const timeoutMs = config?.timeoutMs ?? defaultTimeoutMs;
|
|
7
7
|
const startTime = Date.now();
|
|
8
|
-
let
|
|
9
|
-
|
|
10
|
-
while (elapsedMs <= timeoutMs) {
|
|
11
|
-
const result = await func();
|
|
12
|
-
latestAttempt = result;
|
|
13
|
-
if (result.success) {
|
|
14
|
-
return result;
|
|
15
|
-
}
|
|
16
|
-
elapsedMs = Date.now() - startTime;
|
|
8
|
+
let result = await func();
|
|
9
|
+
while (!result.success && Date.now() - startTime <= timeoutMs) {
|
|
17
10
|
await sleep(intervalMs);
|
|
11
|
+
result = await func();
|
|
18
12
|
}
|
|
19
|
-
|
|
20
|
-
throw new Error("Invalid latest attempt in poll result");
|
|
21
|
-
}
|
|
22
|
-
return latestAttempt;
|
|
13
|
+
return result;
|
|
23
14
|
}
|
|
24
15
|
//# sourceMappingURL=poll.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poll.utils.js","sourceRoot":"","sources":["../../lib/testkit/poll.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,IAAI,CACzB,IAAgE,EAChE,MAGC;IAED,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,iBAAiB,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,gBAAgB,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,
|
|
1
|
+
{"version":3,"file":"poll.utils.js","sourceRoot":"","sources":["../../lib/testkit/poll.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,IAAI,CACzB,IAAgE,EAChE,MAGC;IAED,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,iBAAiB,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,gBAAgB,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IAE1B,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;QAC/D,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;QACxB,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HttpService, HttpServiceStatus } from "../http/http.models.js";
|
|
1
|
+
import type { GetNextPageData, HttpService, HttpServiceStatus } from "../http/http.models.js";
|
|
2
2
|
import type { RetryStrategyOptions, SDKInfo } from "../models/core.models.js";
|
|
3
3
|
import type { JsonValue } from "../models/json.models.js";
|
|
4
4
|
export declare function mockGlobalFetchJsonResponse({ jsonResponse, statusCode, continuationToken, }: {
|
|
@@ -18,3 +18,10 @@ export declare function getTestHttpServiceWithJsonResponse({ jsonResponse, statu
|
|
|
18
18
|
readonly continuationToken?: string;
|
|
19
19
|
readonly retryStrategy?: RetryStrategyOptions;
|
|
20
20
|
}): HttpService;
|
|
21
|
+
export declare function preventInfinitePaging({ responseIndex, maxPagesCount, continuationToken, nextPageUrl, }: {
|
|
22
|
+
readonly responseIndex: number;
|
|
23
|
+
readonly maxPagesCount: number;
|
|
24
|
+
readonly continuationToken?: string;
|
|
25
|
+
readonly nextPageUrl?: string | undefined;
|
|
26
|
+
}): ReturnType<GetNextPageData<null, null>>;
|
|
27
|
+
export declare function getNextPageUrl(index: number): string;
|
|
@@ -2,6 +2,7 @@ import { vi } from "vitest";
|
|
|
2
2
|
import { getDefaultHttpService } from "../http/http.service.js";
|
|
3
3
|
import { isDefined } from "../utils/core.utils.js";
|
|
4
4
|
import { createContinuationHeader, findHeaderByName, toFetchHeaders } from "../utils/header.utils.js";
|
|
5
|
+
const upperBoundLimitForInfinitePaging = 50;
|
|
5
6
|
export function mockGlobalFetchJsonResponse({ jsonResponse, statusCode, continuationToken, }) {
|
|
6
7
|
global.fetch = getFetchJsonMock({
|
|
7
8
|
json: jsonResponse,
|
|
@@ -50,6 +51,18 @@ export function getTestHttpServiceWithJsonResponse({ jsonResponse, statusCode, c
|
|
|
50
51
|
},
|
|
51
52
|
});
|
|
52
53
|
}
|
|
54
|
+
export function preventInfinitePaging({ responseIndex, maxPagesCount, continuationToken, nextPageUrl, }) {
|
|
55
|
+
if (responseIndex >= maxPagesCount + upperBoundLimitForInfinitePaging) {
|
|
56
|
+
throw new Error("Infinite paging detected");
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
continuationToken,
|
|
60
|
+
nextPageUrl,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function getNextPageUrl(index) {
|
|
64
|
+
return `https://page-url.com/${index}`;
|
|
65
|
+
}
|
|
53
66
|
function getFetchBlobMock({ blob, status, responseHeaders, }) {
|
|
54
67
|
return getFetchMock({
|
|
55
68
|
blob,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testkit.utils.js","sourceRoot":"","sources":["../../lib/testkit/testkit.utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testkit.utils.js","sourceRoot":"","sources":["../../lib/testkit/testkit.utils.ts"],"names":[],"mappings":"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"}
|
package/dist/testkit_api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** biome-ignore-all lint/performance/noBarrelFile: One barrel for exported API is fine */
|
|
2
2
|
export { poll } from "./testkit/poll.utils.js";
|
|
3
3
|
export type { FetchResponse } from "./testkit/testkit.models.js";
|
|
4
|
-
export { getFakeBlob, getTestHttpServiceWithJsonResponse, getTestSdkInfo, mockGlobalFetchBlobResponse, mockGlobalFetchJsonResponse, } from "./testkit/testkit.utils.js";
|
|
4
|
+
export { getFakeBlob, getNextPageUrl, getTestHttpServiceWithJsonResponse, getTestSdkInfo, mockGlobalFetchBlobResponse, mockGlobalFetchJsonResponse, preventInfinitePaging, } from "./testkit/testkit.utils.js";
|
package/dist/testkit_api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** biome-ignore-all lint/performance/noBarrelFile: One barrel for exported API is fine */
|
|
2
2
|
export { poll } from "./testkit/poll.utils.js";
|
|
3
|
-
export { getFakeBlob, getTestHttpServiceWithJsonResponse, getTestSdkInfo, mockGlobalFetchBlobResponse, mockGlobalFetchJsonResponse, } from "./testkit/testkit.utils.js";
|
|
3
|
+
export { getFakeBlob, getNextPageUrl, getTestHttpServiceWithJsonResponse, getTestSdkInfo, mockGlobalFetchBlobResponse, mockGlobalFetchJsonResponse, preventInfinitePaging, } from "./testkit/testkit.utils.js";
|
|
4
4
|
//# sourceMappingURL=testkit_api.js.map
|
package/dist/testkit_api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testkit_api.js","sourceRoot":"","sources":["../lib/testkit_api.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EACN,WAAW,EACX,kCAAkC,EAClC,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,
|
|
1
|
+
{"version":3,"file":"testkit_api.js","sourceRoot":"","sources":["../lib/testkit_api.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EACN,WAAW,EACX,cAAc,EACd,kCAAkC,EAClC,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,GACrB,MAAM,4BAA4B,CAAC"}
|
|
@@ -5,7 +5,7 @@ export async function runWithAbortSignal({ func, abortSignal, }) {
|
|
|
5
5
|
};
|
|
6
6
|
}
|
|
7
7
|
const listenerName = "abort";
|
|
8
|
-
return await new Promise((resolve) => {
|
|
8
|
+
return await new Promise((resolve, reject) => {
|
|
9
9
|
const onAbort = () => {
|
|
10
10
|
cleanup();
|
|
11
11
|
resolve({ isAborted: true });
|
|
@@ -18,8 +18,9 @@ export async function runWithAbortSignal({ func, abortSignal, }) {
|
|
|
18
18
|
.then((result) => {
|
|
19
19
|
resolve({ isAborted: false, data: result });
|
|
20
20
|
})
|
|
21
|
-
.catch(() => {
|
|
22
|
-
|
|
21
|
+
.catch((error) => {
|
|
22
|
+
// forward any error that occurs during the execution of the function
|
|
23
|
+
reject(error);
|
|
23
24
|
})
|
|
24
25
|
.finally(() => {
|
|
25
26
|
cleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abort.utils.js","sourceRoot":"","sources":["../../lib/utils/abort.utils.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAI,EAC3C,IAAI,EACJ,WAAW,GAIX;IACA,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO;YACN,SAAS,EAAE,IAAI;SACf,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC;IAE7B,OAAO,MAAM,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"abort.utils.js","sourceRoot":"","sources":["../../lib/utils/abort.utils.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAI,EAC3C,IAAI,EACJ,WAAW,GAIX;IACA,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO;YACN,SAAS,EAAE,IAAI;SACf,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC;IAE7B,OAAO,MAAM,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,WAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC,CAAC;QACF,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEpD,IAAI,EAAE;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAChB,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAChB,qEAAqE;YACrE,MAAM,CAAC,KAAK,CAAC,CAAC;QACf,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACb,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/utils/core.utils.js
CHANGED
|
@@ -15,10 +15,6 @@ export function isBlob(value) {
|
|
|
15
15
|
}
|
|
16
16
|
const record = value;
|
|
17
17
|
return (Object.prototype.toString.call(value) === "[object Blob]" ||
|
|
18
|
-
(typeof record.arrayBuffer === "function" &&
|
|
19
|
-
typeof record.text === "function" &&
|
|
20
|
-
typeof record.stream === "function" &&
|
|
21
|
-
typeof record.size === "number" &&
|
|
22
|
-
typeof record.type === "string"));
|
|
18
|
+
(typeof record.arrayBuffer === "function" && typeof record.size === "number"));
|
|
23
19
|
}
|
|
24
20
|
//# sourceMappingURL=core.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.utils.js","sourceRoot":"","sources":["../../lib/utils/core.utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAI,KAAQ;IACpC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU;IACrC,OAAO,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC1C,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,KAAgC,CAAC;IAEhD,OAAO,CACN,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe;QACzD,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU
|
|
1
|
+
{"version":3,"file":"core.utils.js","sourceRoot":"","sources":["../../lib/utils/core.utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAI,KAAQ;IACpC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU;IACrC,OAAO,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC1C,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,KAAgC,CAAC;IAEhD,OAAO,CACN,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe;QACzD,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAC7E,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AdapterPayload, AdapterResponse } from "../http/http.models.js";
|
|
2
|
-
import type {
|
|
3
|
-
import { AdapterAbortError, AdapterParseError, type BaseErrorData, type ErrorDetails, KontentSdkError } from "../models/error.models.js";
|
|
2
|
+
import type { HttpMethod } from "../models/core.models.js";
|
|
3
|
+
import { AdapterAbortError, AdapterParseError, type BaseErrorData, type ErrorDetails, type ErrorResponseData, KontentSdkError } from "../models/error.models.js";
|
|
4
4
|
export declare function createSdkError<TDetails extends ErrorDetails>({ baseErrorData, details, }: {
|
|
5
5
|
readonly baseErrorData: BaseErrorData;
|
|
6
6
|
readonly details: TDetails;
|
|
@@ -9,13 +9,18 @@ export declare function isKontent404Error(error: unknown): boolean;
|
|
|
9
9
|
export declare function isKontentSdkError(error: unknown): error is KontentSdkError;
|
|
10
10
|
export declare function isAdapterParseError(error: unknown): error is AdapterParseError;
|
|
11
11
|
export declare function isAdapterAbortError(error: unknown): error is AdapterAbortError;
|
|
12
|
-
export declare function toInvalidResponseMessage({ method, url, adapterResponse, kontentErrorResponse, }: {
|
|
12
|
+
export declare function toInvalidResponseMessage({ method, url, adapterResponse, kontentErrorData: kontentErrorResponse, }: {
|
|
13
13
|
readonly url: string;
|
|
14
14
|
readonly method: HttpMethod;
|
|
15
15
|
readonly adapterResponse: AdapterResponse<AdapterPayload>;
|
|
16
|
-
readonly
|
|
16
|
+
readonly kontentErrorData: ErrorResponseData | undefined;
|
|
17
17
|
}): string;
|
|
18
18
|
/**
|
|
19
19
|
* Checks if the given JSON value is a Kontent API error response data.
|
|
20
20
|
*/
|
|
21
21
|
export declare function isKontentErrorResponseData(json: unknown): json is ErrorResponseData;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if the given error is a fetch abort error.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isFetchAbortError(error: unknown): boolean;
|
|
26
|
+
export declare function toFriendlyKontentSdkErrorMessage(message: string, error: ErrorDetails): string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { match, P } from "ts-pattern";
|
|
2
|
+
import { AdapterAbortError, AdapterParseError, errorResponseDataSchema, KontentSdkError, } from "../models/error.models.js";
|
|
2
3
|
import { isDefined } from "./core.utils.js";
|
|
3
4
|
export function createSdkError({ baseErrorData, details, }) {
|
|
4
5
|
return new KontentSdkError({
|
|
@@ -18,24 +19,33 @@ export function isAdapterParseError(error) {
|
|
|
18
19
|
export function isAdapterAbortError(error) {
|
|
19
20
|
return error instanceof AdapterAbortError;
|
|
20
21
|
}
|
|
21
|
-
export function toInvalidResponseMessage({ method, url, adapterResponse, kontentErrorResponse, }) {
|
|
22
|
-
const details = kontentErrorResponse ? getKontentErrorResponseMessage(adapterResponse, kontentErrorResponse) :
|
|
23
|
-
return `Failed to execute '${method}' request '${url}'.${details
|
|
22
|
+
export function toInvalidResponseMessage({ method, url, adapterResponse, kontentErrorData: kontentErrorResponse, }) {
|
|
23
|
+
const details = kontentErrorResponse ? ` ${getKontentErrorResponseMessage(adapterResponse, kontentErrorResponse)}` : "";
|
|
24
|
+
return `Failed to execute '${method}' request '${url}'.${details}`;
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
27
|
* Checks if the given JSON value is a Kontent API error response data.
|
|
27
28
|
*/
|
|
28
29
|
export function isKontentErrorResponseData(json) {
|
|
29
|
-
if (!json) {
|
|
30
|
+
if (!json || typeof json !== "object" || Array.isArray(json)) {
|
|
30
31
|
return false;
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
return errorResponseDataSchema.safeParse(json).success;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Checks if the given error is a fetch abort error.
|
|
37
|
+
*/
|
|
38
|
+
export function isFetchAbortError(error) {
|
|
39
|
+
if (!error || typeof error !== "object") {
|
|
40
|
+
return false;
|
|
37
41
|
}
|
|
38
|
-
return
|
|
42
|
+
return "name" in error && error.name === "AbortError";
|
|
43
|
+
}
|
|
44
|
+
export function toFriendlyKontentSdkErrorMessage(message, error) {
|
|
45
|
+
return match(error)
|
|
46
|
+
.returnType()
|
|
47
|
+
.with({ reason: P.union("invalidResponse", "notFound"), kontentErrorResponse: P.nonNullable }, (m) => `${message} ${m.kontentErrorResponse.message}`)
|
|
48
|
+
.otherwise(() => message);
|
|
39
49
|
}
|
|
40
50
|
function getValidationErrorMessage(validationErrors) {
|
|
41
51
|
if (!validationErrors?.length) {
|
|
@@ -54,6 +64,6 @@ function getValidationErrorMessage(validationErrors) {
|
|
|
54
64
|
}
|
|
55
65
|
function getKontentErrorResponseMessage(adapterResponse, kontentErrorResponse) {
|
|
56
66
|
const validationErrorMessage = getValidationErrorMessage(kontentErrorResponse.validation_errors);
|
|
57
|
-
return `Request failed with status '${adapterResponse.status}' and status text '${adapterResponse.statusText}'
|
|
67
|
+
return `Request failed with status '${adapterResponse.status}' and status text '${adapterResponse.statusText}'. ${kontentErrorResponse.message}${validationErrorMessage ? ` ${validationErrorMessage}` : ""}`;
|
|
58
68
|
}
|
|
59
69
|
//# 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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"}
|
|
@@ -17,7 +17,8 @@ export function createAuthorizationHeader(apiKey) {
|
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
export function findHeaderByName(headers, name) {
|
|
20
|
-
|
|
20
|
+
const normalizedName = name.toLowerCase();
|
|
21
|
+
return headers.find((header) => header.name.toLowerCase() === normalizedName);
|
|
21
22
|
}
|
|
22
23
|
export function getRetryAfterHeaderValue(headers) {
|
|
23
24
|
const retryAfterHeader = findHeaderByName(headers, "Retry-After");
|
|
@@ -33,10 +34,7 @@ export function toSdkHeaders(headers) {
|
|
|
33
34
|
}));
|
|
34
35
|
}
|
|
35
36
|
export function toFetchHeaders(headers) {
|
|
36
|
-
return headers.
|
|
37
|
-
headers.append(header.name, header.value);
|
|
38
|
-
return headers;
|
|
39
|
-
}, new Headers());
|
|
37
|
+
return new Headers(headers.map((header) => [header.name, header.value]));
|
|
40
38
|
}
|
|
41
39
|
export function isApplicationJsonResponseType(headers) {
|
|
42
40
|
return findHeaderByName(headers, "Content-Type")?.value.toLowerCase().includes("application/json") ?? false;
|
|
@@ -45,8 +43,11 @@ export function extractContinuationToken(responseHeaders) {
|
|
|
45
43
|
return findHeaderByName(responseHeaders, "X-Continuation")?.value;
|
|
46
44
|
}
|
|
47
45
|
function getNumericRetryAfterHeaderValue(retryAfterValue) {
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
if (!retryAfterValue.trim()) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const parsedNumber = Number(retryAfterValue);
|
|
50
|
+
if (!Number.isNaN(parsedNumber)) {
|
|
50
51
|
return parsedNumber;
|
|
51
52
|
}
|
|
52
53
|
return undefined;
|
|
@@ -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,KAAa;IACrD,OAAO;QACN,IAAI,EAAE,gBAA4C;QAClD,KAAK,EAAE,KAAK;KACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACvD,OAAO;QACN,IAAI,EAAE,eAA2C;QACjD,KAAK,EAAE,UAAU,MAAM,EAAE;KACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA0B,EAAE,IAAuB;IACnF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"header.utils.js","sourceRoot":"","sources":["../../lib/utils/header.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export declare function runWithRetry<TResponse extends HttpPayload, TRequestBody
|
|
|
7
7
|
readonly func: (retryAttempt: number) => Promise<HttpResponse<TResponse, TRequestBody>>;
|
|
8
8
|
readonly retryStrategyOptions: ResolvedRetryStrategyOptions;
|
|
9
9
|
readonly retryAttempt: number;
|
|
10
|
-
readonly url:
|
|
10
|
+
readonly url: URL;
|
|
11
11
|
readonly abortSignal: AbortSignal | undefined;
|
|
12
12
|
}): Promise<HttpResponse<TResponse, TRequestBody>>;
|
|
13
13
|
export declare function resolveDefaultRetryStrategyOptions(options?: RetryStrategyOptions): ResolvedRetryStrategyOptions;
|
|
@@ -8,50 +8,32 @@ const defaultCanRetryAdapterError = (_error) => {
|
|
|
8
8
|
return false;
|
|
9
9
|
};
|
|
10
10
|
export async function runWithRetry(data) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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 }),
|
|
44
|
-
};
|
|
11
|
+
let retryAttempt = data.retryAttempt;
|
|
12
|
+
let retryResult = { canRetry: true, retryInMs: 0 };
|
|
13
|
+
while (retryResult.canRetry) {
|
|
14
|
+
const { success, response, error } = await data.func(retryAttempt);
|
|
15
|
+
if (success) {
|
|
16
|
+
return { success: true, response: response };
|
|
17
|
+
}
|
|
18
|
+
retryResult = getRetryResult({ error, retryAttempt, retryStrategyOptions: data.retryStrategyOptions });
|
|
19
|
+
if (retryResult.canRetry) {
|
|
20
|
+
// wait before the next retry or if the abort signal is aborted, return the error
|
|
21
|
+
const { isAborted } = await waitBeforeNextRetry({ retryInMs: retryResult.retryInMs, abortSignal: data.abortSignal });
|
|
22
|
+
if (isAborted) {
|
|
23
|
+
return {
|
|
24
|
+
success: false,
|
|
25
|
+
error: createAbortError({ url: data.url, retryStrategyOptions: data.retryStrategyOptions, retryAttempt }),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
retryAttempt += 1;
|
|
29
|
+
// log retry attempt when available
|
|
30
|
+
data.retryStrategyOptions.logRetryAttempt?.(retryAttempt, data.url.toString());
|
|
31
|
+
}
|
|
45
32
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
retryStrategyOptions: data.retryStrategyOptions,
|
|
51
|
-
retryAttempt: newRetryAttempt,
|
|
52
|
-
url: data.url,
|
|
53
|
-
abortSignal: data.abortSignal,
|
|
54
|
-
});
|
|
33
|
+
return {
|
|
34
|
+
success: false,
|
|
35
|
+
error: retryResult.error,
|
|
36
|
+
};
|
|
55
37
|
}
|
|
56
38
|
export function resolveDefaultRetryStrategyOptions(options) {
|
|
57
39
|
const maxRetries = options?.maxRetries ?? defaultMaxRetries;
|
|
@@ -86,7 +68,7 @@ function createAbortError({ url, retryStrategyOptions, retryAttempt, }) {
|
|
|
86
68
|
return createSdkError({
|
|
87
69
|
baseErrorData: {
|
|
88
70
|
message: "The request was aborted while waiting before the next retry attempt.",
|
|
89
|
-
url,
|
|
71
|
+
url: url.toString(),
|
|
90
72
|
retryStrategyOptions,
|
|
91
73
|
retryAttempt,
|
|
92
74
|
},
|
|
@@ -113,6 +95,7 @@ function getRetryResult({ retryStrategyOptions, error, retryAttempt, }) {
|
|
|
113
95
|
})) {
|
|
114
96
|
return {
|
|
115
97
|
canRetry: false,
|
|
98
|
+
error,
|
|
116
99
|
};
|
|
117
100
|
}
|
|
118
101
|
return {
|
|
@@ -136,20 +119,14 @@ function canRetryError({ retryAttempt, error, maxRetries, canRetryAdapterError,
|
|
|
136
119
|
})
|
|
137
120
|
.with({
|
|
138
121
|
details: {
|
|
139
|
-
reason: P.union("invalidBody", "invalidResponse", "invalidUrl", "notFound", "unauthorized", "validationFailed", "
|
|
122
|
+
reason: P.union("invalidBody", "invalidResponse", "invalidUrl", "notFound", "unauthorized", "validationFailed", "aborted", "parseError"),
|
|
140
123
|
},
|
|
141
124
|
}, () => false)
|
|
142
125
|
.with({ details: { reason: "adapterError" } }, (m) => {
|
|
143
|
-
|
|
144
|
-
return canRetryAdapterError(m);
|
|
145
|
-
}
|
|
146
|
-
throw new Error("Failed to assert adapter error");
|
|
126
|
+
return canRetryAdapterError(m);
|
|
147
127
|
})
|
|
148
128
|
.exhaustive();
|
|
149
129
|
}
|
|
150
|
-
function isErrorWithReason(error, reason) {
|
|
151
|
-
return error.details.reason === reason;
|
|
152
|
-
}
|
|
153
130
|
function isRateLimitError({ error }) {
|
|
154
131
|
return match(error)
|
|
155
132
|
.returnType()
|