@kontent-ai/core-sdk 12.0.0-preview.4 → 12.0.0-preview.40

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.
Files changed (146) hide show
  1. package/.npmignore +1 -5
  2. package/LICENSE.md +1 -1
  3. package/README.md +117 -12
  4. package/dist/core-sdk-info.d.ts +2 -0
  5. package/dist/core-sdk-info.js +6 -0
  6. package/dist/core-sdk-info.js.map +1 -0
  7. package/dist/devkit/console.utils.d.ts +2 -0
  8. package/dist/devkit/console.utils.js +5 -0
  9. package/dist/devkit/console.utils.js.map +1 -0
  10. package/dist/devkit/environment.utils.d.ts +2 -0
  11. package/dist/devkit/environment.utils.js +12 -0
  12. package/dist/devkit/environment.utils.js.map +1 -0
  13. package/dist/devkit/script.utils.js +3 -3
  14. package/dist/devkit/script.utils.js.map +1 -1
  15. package/dist/{utils → devkit}/sdk-version.utils.js +2 -2
  16. package/dist/devkit/sdk-version.utils.js.map +1 -0
  17. package/dist/devkit_api.d.ts +4 -1
  18. package/dist/devkit_api.js +4 -2
  19. package/dist/devkit_api.js.map +1 -1
  20. package/dist/http/http.adapter.d.ts +1 -1
  21. package/dist/http/http.adapter.js +74 -24
  22. package/dist/http/http.adapter.js.map +1 -1
  23. package/dist/http/http.models.d.ts +49 -37
  24. package/dist/http/http.service.d.ts +2 -2
  25. package/dist/http/http.service.js +305 -220
  26. package/dist/http/http.service.js.map +1 -1
  27. package/dist/models/core.models.d.ts +33 -40
  28. package/dist/models/error.models.d.ts +78 -32
  29. package/dist/models/error.models.js +51 -1
  30. package/dist/models/error.models.js.map +1 -1
  31. package/dist/models/json.models.d.ts +13 -4
  32. package/dist/models/json.models.js +10 -1
  33. package/dist/models/json.models.js.map +1 -1
  34. package/dist/models/utility.types.d.ts +16 -0
  35. package/dist/models/utility.types.js +2 -0
  36. package/dist/models/utility.types.js.map +1 -0
  37. package/dist/public_api.d.ts +22 -11
  38. package/dist/public_api.js +18 -6
  39. package/dist/public_api.js.map +1 -1
  40. package/dist/sdk/queries/fetch-sdk-query.d.ts +4 -0
  41. package/dist/sdk/queries/fetch-sdk-query.js +17 -0
  42. package/dist/sdk/queries/fetch-sdk-query.js.map +1 -0
  43. package/dist/sdk/queries/mutation-sdk-query.d.ts +5 -0
  44. package/dist/sdk/queries/mutation-sdk-query.js +16 -0
  45. package/dist/sdk/queries/mutation-sdk-query.js.map +1 -0
  46. package/dist/sdk/queries/paged-fetch-sdk-query.d.ts +8 -0
  47. package/dist/sdk/queries/paged-fetch-sdk-query.js +101 -0
  48. package/dist/sdk/queries/paged-fetch-sdk-query.js.map +1 -0
  49. package/dist/sdk/resolve-query.d.ts +12 -0
  50. package/dist/sdk/resolve-query.js +172 -0
  51. package/dist/sdk/resolve-query.js.map +1 -0
  52. package/dist/sdk/sdk-config.d.ts +24 -0
  53. package/dist/sdk/sdk-config.js +31 -0
  54. package/dist/sdk/sdk-config.js.map +1 -0
  55. package/dist/sdk/sdk-models.d.ts +118 -40
  56. package/dist/sdk/sdk-utils.d.ts +16 -0
  57. package/dist/sdk/sdk-utils.js +36 -0
  58. package/dist/sdk/sdk-utils.js.map +1 -0
  59. package/dist/sdk/transform/transform-fetch-query.d.ts +11 -0
  60. package/dist/sdk/transform/transform-fetch-query.js +15 -0
  61. package/dist/sdk/transform/transform-fetch-query.js.map +1 -0
  62. package/dist/sdk/transform/transform-mutation-query.d.ts +11 -0
  63. package/dist/sdk/transform/transform-mutation-query.js +15 -0
  64. package/dist/sdk/transform/transform-mutation-query.js.map +1 -0
  65. package/dist/sdk/transform/transform-paged-fetch-query.d.ts +11 -0
  66. package/dist/sdk/transform/transform-paged-fetch-query.js +75 -0
  67. package/dist/sdk/transform/transform-paged-fetch-query.js.map +1 -0
  68. package/dist/sdk/transform/transform-utils.d.ts +23 -0
  69. package/dist/sdk/transform/transform-utils.js +86 -0
  70. package/dist/sdk/transform/transform-utils.js.map +1 -0
  71. package/dist/testkit/poll.utils.d.ts +5 -0
  72. package/dist/testkit/poll.utils.js +15 -0
  73. package/dist/testkit/poll.utils.js.map +1 -0
  74. package/dist/testkit/testkit.models.d.ts +2 -2
  75. package/dist/testkit/testkit.utils.d.ts +27 -0
  76. package/dist/testkit/testkit.utils.js +113 -0
  77. package/dist/testkit/testkit.utils.js.map +1 -0
  78. package/dist/testkit_api.d.ts +3 -1
  79. package/dist/testkit_api.js +3 -2
  80. package/dist/testkit_api.js.map +1 -1
  81. package/dist/utils/abort.utils.d.ts +12 -0
  82. package/dist/utils/abort.utils.js +30 -0
  83. package/dist/utils/abort.utils.js.map +1 -0
  84. package/dist/utils/array.utils.d.ts +1 -0
  85. package/dist/utils/array.utils.js +4 -0
  86. package/dist/utils/array.utils.js.map +1 -0
  87. package/dist/utils/core.utils.d.ts +3 -1
  88. package/dist/utils/core.utils.js +18 -2
  89. package/dist/utils/core.utils.js.map +1 -1
  90. package/dist/utils/error.utils.d.ts +24 -8
  91. package/dist/utils/error.utils.js +47 -9
  92. package/dist/utils/error.utils.js.map +1 -1
  93. package/dist/utils/header.utils.d.ts +7 -2
  94. package/dist/utils/header.utils.js +43 -11
  95. package/dist/utils/header.utils.js.map +1 -1
  96. package/dist/utils/retry.utils.d.ts +17 -12
  97. package/dist/utils/retry.utils.js +125 -80
  98. package/dist/utils/retry.utils.js.map +1 -1
  99. package/dist/utils/schema.utils.d.ts +3 -0
  100. package/dist/utils/schema.utils.js +10 -0
  101. package/dist/utils/schema.utils.js.map +1 -0
  102. package/dist/utils/try-catch.utils.d.ts +15 -0
  103. package/dist/utils/{try.utils.js → try-catch.utils.js} +1 -1
  104. package/dist/utils/try-catch.utils.js.map +1 -0
  105. package/dist/utils/url.utils.d.ts +6 -0
  106. package/dist/utils/url.utils.js +10 -0
  107. package/dist/utils/url.utils.js.map +1 -0
  108. package/package.json +64 -64
  109. package/dist/models/utility.models.d.ts +0 -20
  110. package/dist/models/utility.models.js +0 -2
  111. package/dist/models/utility.models.js.map +0 -1
  112. package/dist/sdk/sdk-queries.d.ts +0 -30
  113. package/dist/sdk/sdk-queries.js +0 -152
  114. package/dist/sdk/sdk-queries.js.map +0 -1
  115. package/dist/sdk-info.d.ts +0 -5
  116. package/dist/sdk-info.js +0 -6
  117. package/dist/sdk-info.js.map +0 -1
  118. package/dist/testkit/test.utils.d.ts +0 -15
  119. package/dist/testkit/test.utils.js +0 -42
  120. package/dist/testkit/test.utils.js.map +0 -1
  121. package/dist/utils/sdk-version.utils.js.map +0 -1
  122. package/dist/utils/try.utils.d.ts +0 -14
  123. package/dist/utils/try.utils.js.map +0 -1
  124. package/lib/devkit/script.utils.ts +0 -12
  125. package/lib/devkit_api.ts +0 -3
  126. package/lib/http/http.adapter.ts +0 -38
  127. package/lib/http/http.models.ts +0 -122
  128. package/lib/http/http.service.ts +0 -320
  129. package/lib/models/core.models.ts +0 -89
  130. package/lib/models/error.models.ts +0 -83
  131. package/lib/models/json.models.ts +0 -9
  132. package/lib/models/utility.models.ts +0 -21
  133. package/lib/public_api.ts +0 -46
  134. package/lib/sdk/sdk-models.ts +0 -86
  135. package/lib/sdk/sdk-queries.ts +0 -232
  136. package/lib/sdk-info.ts +0 -5
  137. package/lib/testkit/test.utils.ts +0 -79
  138. package/lib/testkit/testkit.models.ts +0 -7
  139. package/lib/testkit_api.ts +0 -3
  140. package/lib/utils/core.utils.ts +0 -3
  141. package/lib/utils/error.utils.ts +0 -48
  142. package/lib/utils/header.utils.ts +0 -40
  143. package/lib/utils/retry.utils.ts +0 -156
  144. package/lib/utils/sdk-version.utils.ts +0 -16
  145. package/lib/utils/try.utils.ts +0 -30
  146. /package/dist/{utils → devkit}/sdk-version.utils.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"error.utils.js","sourceRoot":"","sources":["../../lib/utils/error.utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,UAAU,iBAAiB,CAAC,KAAmB;IACpD,OAAO,aAAa,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC/B,MAAM,EACN,GAAG,EACH,eAAe,EACf,oBAAoB,GAMpB;IACA,MAAM,OAAO,GAAG,oBAAoB,CAAC,CAAC,CAAC,8BAA8B,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzH,OAAO,sBAAsB,MAAM,cAAc,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACzF,CAAC;AAED,SAAS,aAAa,CAA8B,MAAe,EAAE,KAAmB;IACvF,OAAO,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;AAChC,CAAC;AAED,SAAS,yBAAyB,CAAC,gBAAoD;IACtF,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC/B,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,8BAA8B,CAAC,eAAgC,EAAE,oBAA8C;IACvH,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IACjG,OAAO,gCAAgC,eAAe,CAAC,MAAM,sBAAsB,eAAe,CAAC,UAAU,KAAK,oBAAoB,CAAC,OAAO,GAAG,sBAAsB,CAAC,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/M,CAAC"}
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";
2
- export declare function getSdkIdHeader(info: SDKInfo): Header;
1
+ import type { Header, KnownHeaderName, SdkInfo } from "../models/core.models.js";
2
+ export declare function createSdkIdHeader(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: KnownHeaderName): 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;
@@ -1,19 +1,31 @@
1
- export function getSdkIdHeader(info) {
1
+ export function createSdkIdHeader(info) {
2
2
  return {
3
3
  name: "X-KC-SDKID",
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
+ const normalizedName = name.toLowerCase();
21
+ return headers.find((header) => header.name.toLowerCase() === normalizedName);
22
+ }
7
23
  export function getRetryAfterHeaderValue(headers) {
8
- const retryAfterHeader = headers.find((header) => header.name.toLowerCase() === "Retry-After".toLowerCase());
24
+ const retryAfterHeader = findHeaderByName(headers, "Retry-After");
9
25
  if (!retryAfterHeader) {
10
26
  return undefined;
11
27
  }
12
- const numberValue = +retryAfterHeader.value;
13
- if (!Number.isSafeInteger(numberValue)) {
14
- return undefined;
15
- }
16
- return numberValue;
28
+ return getNumericRetryAfterHeaderValue(retryAfterHeader.value) ?? getDateRetryAfterHeaderValue(retryAfterHeader.value);
17
29
  }
18
30
  export function toSdkHeaders(headers) {
19
31
  return Array.from(headers.entries()).map(([key, value]) => ({
@@ -22,9 +34,29 @@ export function toSdkHeaders(headers) {
22
34
  }));
23
35
  }
24
36
  export function toFetchHeaders(headers) {
25
- return headers.reduce((headers, header) => {
26
- headers.append(header.name, header.value);
27
- return headers;
28
- }, new Headers());
37
+ return new Headers(headers.map((header) => [header.name, header.value]));
38
+ }
39
+ export function isApplicationJsonResponseType(headers) {
40
+ return findHeaderByName(headers, "Content-Type")?.value.toLowerCase().includes("application/json") ?? false;
41
+ }
42
+ export function extractContinuationToken(responseHeaders) {
43
+ return findHeaderByName(responseHeaders, "X-Continuation")?.value;
44
+ }
45
+ function getNumericRetryAfterHeaderValue(retryAfterValue) {
46
+ if (!retryAfterValue.trim()) {
47
+ return undefined;
48
+ }
49
+ const parsedNumber = Number(retryAfterValue);
50
+ if (!Number.isNaN(parsedNumber)) {
51
+ return parsedNumber;
52
+ }
53
+ return undefined;
54
+ }
55
+ function getDateRetryAfterHeaderValue(retryAfterValue) {
56
+ const retryAfterDate = Date.parse(retryAfterValue);
57
+ if (Number.isNaN(retryAfterDate)) {
58
+ return undefined;
59
+ }
60
+ return Math.max(0, Math.ceil((retryAfterDate - Date.now()) / 1000));
29
61
  }
30
62
  //# 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,OAA0B;IAClE,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAM,aAA0C,CAAC,WAAW,EAAE,CACnG,CAAC;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAE5C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,KAAK;KACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAA0B;IACxD,OAAO,OAAO,CAAC,MAAM,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IAChB,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;AACnB,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 { Header, HttpMethod, RetryStrategyOptions } from "../models/core.models.js";
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>>;
6
- readonly retryStrategyOptions: Required<RetryStrategyOptions>;
1
+ import type { AdapterPayload, 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<TPayload extends AdapterPayload, TBody extends HttpRequestBody>(data: {
7
+ readonly func: (retryAttempt: number) => Promise<HttpResponse<TPayload, TBody>>;
8
+ readonly retryStrategyOptions: ResolvedRetryStrategyOptions;
7
9
  readonly retryAttempt: number;
8
- readonly url: string;
9
- readonly requestHeaders: readonly Header[];
10
- readonly method: HttpMethod;
11
- }): Promise<HttpResponse<TResponse, TBodyData>>;
12
- export declare function toRequiredRetryStrategyOptions(options?: RetryStrategyOptions): Required<RetryStrategyOptions>;
13
- export declare function getDefaultRetryAttemptLogMessage(retryAttempt: number, maxRetries: number, url: string): string;
10
+ readonly url: URL;
11
+ readonly abortSignal: AbortSignal | undefined;
12
+ }): Promise<HttpResponse<TPayload, TBody>>;
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,106 +1,151 @@
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 getDefaultDelayBetweenRetriesMs = (error) => {
4
- if (error.reason === "notFound" || error.reason === "invalidResponse") {
5
- return getRetryFromHeaderMs({ error });
6
- }
7
- return 0;
7
+ const defaultCanRetryAdapterError = (_error) => {
8
+ return false;
8
9
  };
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;
10
+ export async function runWithRetry(data) {
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());
14
31
  }
15
- return error.status >= 500 || error.status === 429;
16
32
  }
17
- return true;
18
- };
19
- export async function runWithRetryAsync(data) {
20
- const { success, response, error } = await data.funcAsync();
21
- if (success) {
22
- return {
23
- success: true,
24
- response,
25
- };
33
+ return {
34
+ success: false,
35
+ error: retryResult.error,
36
+ };
37
+ }
38
+ export function resolveDefaultRetryStrategyOptions(options) {
39
+ const maxRetries = options?.maxRetries ?? defaultMaxRetries;
40
+ const resolvedOptions = {
41
+ maxRetries: maxRetries,
42
+ getDelayBetweenRetriesMs: (error) => getRetryMsFromHeaders({ error }),
43
+ canRetryAdapterError: options?.canRetryAdapterError ?? defaultCanRetryAdapterError,
44
+ logRetryAttempt: match(options?.logRetryAttempt)
45
+ .returnType()
46
+ .with("logToConsole", () => (retryAttempt, url) => {
47
+ console.warn(getDefaultRetryAttemptLogMessage(retryAttempt, maxRetries, url));
48
+ })
49
+ .otherwise((m) => m),
50
+ };
51
+ return resolvedOptions;
52
+ }
53
+ export async function waitBeforeNextRetry({ retryInMs, abortSignal, }) {
54
+ if (abortSignal) {
55
+ return await waitBeforeNextRetryWithAbortSignal({ retryInMs, abortSignal });
26
56
  }
27
- const newRetryAttempt = data.retryAttempt + 1;
28
- const retryResult = getRetryResult({
29
- error,
30
- retryAttempt: data.retryAttempt,
31
- options: data.retryStrategyOptions,
32
- });
33
- if (!retryResult.canRetry) {
57
+ if (retryInMs <= 0) {
34
58
  return {
35
- success: false,
36
- error: {
37
- ...error,
38
- retryAttempt: data.retryAttempt,
39
- retryStrategyOptions: data.retryStrategyOptions,
40
- },
59
+ isAborted: false,
41
60
  };
42
61
  }
43
- logRetryAttempt(data.retryStrategyOptions, newRetryAttempt, data.url);
44
- await waitAsync(retryResult.retryInMs);
45
- return await runWithRetryAsync({
46
- funcAsync: data.funcAsync,
47
- retryStrategyOptions: data.retryStrategyOptions,
48
- retryAttempt: newRetryAttempt,
49
- url: data.url,
50
- requestHeaders: data.requestHeaders,
51
- method: data.method,
52
- });
53
- }
54
- export function toRequiredRetryStrategyOptions(options) {
55
- const maxRetries = options?.maxRetries ?? defaultMaxRetries;
62
+ await sleep(retryInMs);
56
63
  return {
57
- maxRetries: maxRetries,
58
- canRetryError: options?.canRetryError ?? defaultCanRetryError,
59
- getDelayBetweenRetriesMs: options?.getDelayBetweenRetriesMs ?? getDefaultDelayBetweenRetriesMs,
60
- logRetryAttempt: options?.logRetryAttempt === false
61
- ? false
62
- : (attempt, url) => {
63
- if (options?.logRetryAttempt) {
64
- options.logRetryAttempt(attempt, url);
65
- }
66
- else {
67
- console.warn(getDefaultRetryAttemptLogMessage(attempt, maxRetries, url));
68
- }
69
- },
64
+ isAborted: false,
70
65
  };
71
66
  }
72
- export function getDefaultRetryAttemptLogMessage(retryAttempt, maxRetries, url) {
73
- return `Retry attempt '${retryAttempt}' from a maximum of '${maxRetries}' retries. Requested url: '${url}'`;
67
+ function createAbortError({ url, retryStrategyOptions, retryAttempt, }) {
68
+ return createSdkError({
69
+ baseErrorData: {
70
+ message: "The request was aborted while waiting before the next retry attempt.",
71
+ url: url.toString(),
72
+ retryStrategyOptions,
73
+ retryAttempt,
74
+ },
75
+ details: { reason: "aborted", originalError: undefined },
76
+ });
74
77
  }
75
- function logRetryAttempt(opts, retryAttempt, url) {
76
- if (opts.logRetryAttempt) {
77
- opts.logRetryAttempt(retryAttempt, url);
78
- }
78
+ async function waitBeforeNextRetryWithAbortSignal({ retryInMs, abortSignal, }) {
79
+ return await runWithAbortSignal({
80
+ func: async () => {
81
+ return await sleep(retryInMs);
82
+ },
83
+ abortSignal,
84
+ });
79
85
  }
80
- function waitAsync(ms) {
81
- return new Promise((resolve) => setTimeout(resolve, ms));
86
+ function getDefaultRetryAttemptLogMessage(retryAttempt, maxRetries, url) {
87
+ return `Retry attempt '${retryAttempt}' from a maximum of '${maxRetries}' retries. Requested url: '${url}'`;
82
88
  }
83
- function getRetryResult({ retryAttempt, error, options, }) {
84
- if (retryAttempt >= options.maxRetries) {
85
- return {
86
- canRetry: false,
87
- };
88
- }
89
- if (!options.canRetryError(error)) {
89
+ function getRetryResult({ retryStrategyOptions, error, retryAttempt, }) {
90
+ if (!canRetryError({
91
+ retryAttempt,
92
+ error,
93
+ maxRetries: retryStrategyOptions.maxRetries,
94
+ canRetryAdapterError: retryStrategyOptions.canRetryAdapterError,
95
+ })) {
90
96
  return {
91
97
  canRetry: false,
98
+ error,
92
99
  };
93
100
  }
94
101
  return {
95
102
  canRetry: true,
96
- retryInMs: options.getDelayBetweenRetriesMs(error),
103
+ retryInMs: retryStrategyOptions.getDelayBetweenRetriesMs(error),
97
104
  };
98
105
  }
99
- function getRetryFromHeaderMs({ error }) {
100
- const retryAfterHeaderValue = getRetryAfterHeaderValue(error.responseHeaders);
101
- if (retryAfterHeaderValue) {
102
- return retryAfterHeaderValue * 1000;
106
+ function canRetryError({ retryAttempt, error, maxRetries, canRetryAdapterError, }) {
107
+ if (hasExceededMaxRetries({ retryAttempt, maxRetries })) {
108
+ return false;
109
+ }
110
+ if (isRateLimitError({ error })) {
111
+ return true;
103
112
  }
104
- return 0;
113
+ return match(error)
114
+ .returnType()
115
+ .with({ details: { kontentErrorResponse: P.nonNullable } }, () => {
116
+ // The request is clearly invalid as we got an error response from the API
117
+ // and we should not retry such requests
118
+ return false;
119
+ })
120
+ .with({
121
+ details: {
122
+ reason: P.union("invalidBody", "invalidResponse", "invalidUrl", "transformError", "notFound", "unauthorized", "parsingFailed", "aborted", "parseError"),
123
+ },
124
+ }, () => false)
125
+ .with({ details: { reason: "adapterError" } }, (m) => {
126
+ return canRetryAdapterError(m);
127
+ })
128
+ .exhaustive();
129
+ }
130
+ function isRateLimitError({ error }) {
131
+ return match(error)
132
+ .returnType()
133
+ .with({ details: { status: 429 } }, () => true)
134
+ .otherwise(() => false);
135
+ }
136
+ function hasExceededMaxRetries({ retryAttempt, maxRetries }) {
137
+ return retryAttempt >= maxRetries;
138
+ }
139
+ function getRetryMsFromHeaders({ error }) {
140
+ return match(error)
141
+ .returnType()
142
+ .with({ details: { responseHeaders: P.nonNullable } }, (m) => {
143
+ const retryAfterHeaderValue = getRetryAfterHeaderValue(m.details.responseHeaders);
144
+ if (retryAfterHeaderValue) {
145
+ return retryAfterHeaderValue * 1000;
146
+ }
147
+ return 0;
148
+ })
149
+ .otherwise(() => 0);
105
150
  }
106
151
  //# sourceMappingURL=retry.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.utils.js","sourceRoot":"","sources":["../../lib/utils/retry.utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.utils.js","sourceRoot":"","sources":["../../lib/utils/retry.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ZodMiniType } from "zod/mini";
2
+ export type SchemaInput<T> = (() => Promise<ZodMiniType<T>>) | ZodMiniType<T> | undefined;
3
+ export declare function resolveSchema<T>(input: SchemaInput<T>): Promise<ZodMiniType<T> | undefined>;
@@ -0,0 +1,10 @@
1
+ export async function resolveSchema(input) {
2
+ if (input === undefined) {
3
+ return undefined;
4
+ }
5
+ if (typeof input === "function") {
6
+ return await input();
7
+ }
8
+ return input;
9
+ }
10
+ //# sourceMappingURL=schema.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.utils.js","sourceRoot":"","sources":["../../lib/utils/schema.utils.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,KAAqB;IAC3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,KAAK,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,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>;
@@ -15,4 +15,4 @@ export function tryCatch(fn) {
15
15
  return { success: false, error };
16
16
  }
17
17
  }
18
- //# sourceMappingURL=try.utils.js.map
18
+ //# sourceMappingURL=try-catch.utils.js.map
@@ -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,6 @@
1
+ import type { BaseUrl } from "../sdk/sdk-models.js";
2
+ export declare function getEndpointUrl({ environmentId, path, baseUrl }: {
3
+ readonly environmentId: string;
4
+ readonly path: string;
5
+ readonly baseUrl: BaseUrl;
6
+ }): string;
@@ -0,0 +1,10 @@
1
+ export function getEndpointUrl({ environmentId, path, baseUrl, }) {
2
+ return `${baseUrl.protocol}://${removeTrailingSlashes(baseUrl.host)}${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":"AAEA,MAAM,UAAU,cAAc,CAAC,EAC9B,aAAa,EACb,IAAI,EACJ,OAAO,GAKP;IACA,OAAO,GAAG,OAAO,CAAC,QAAQ,MAAM,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AAC7H,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"}
package/package.json CHANGED
@@ -1,65 +1,65 @@
1
1
  {
2
- "name": "@kontent-ai/core-sdk",
3
- "version": "12.0.0-preview.4",
4
- "repository": {
5
- "type": "git",
6
- "url": "https://github.com/kontent-ai/kontent-core-js"
7
- },
8
- "private": false,
9
- "author": "richard sustek",
10
- "license": "MIT",
11
- "description": "Core package with shared / common functionality for Kontent.ai SDKs",
12
- "keywords": [
13
- "Kontent.ai",
14
- "Kontent AI",
15
- "Kontent SDK Core"
16
- ],
17
- "engines": {
18
- "node": ">= 22"
19
- },
20
- "exports": {
21
- ".": {
22
- "types": "./dist/public_api.d.ts",
23
- "default": "./dist/public_api.js"
24
- },
25
- "./devkit": {
26
- "types": "./dist/devkit_api.d.ts",
27
- "default": "./dist/devkit_api.js"
28
- },
29
- "./testkit": {
30
- "types": "./dist/testkit_api.d.ts",
31
- "default": "./dist/testkit_api.js"
32
- }
33
- },
34
- "type": "module",
35
- "scripts": {
36
- "prepublishOnly": "npm run build",
37
- "build": "npm run lint && npm run clean && tsc --p tsconfig.build.json && npm run update:version",
38
- "test": "npm run test:unit && npm run test:integration",
39
- "test:unit": "vitest run --config=vitest-unit.config.ts",
40
- "test:integration": "vitest run --config=vitest-integration.config.ts",
41
- "lint": "npm run biome:check && npm run eslint",
42
- "eslint": "eslint ",
43
- "biome:check": "biome check",
44
- "biome:fix": "biome check --write",
45
- "biome:fix:unsafe": "biome check --write --unsafe",
46
- "clean": "tsx scripts/clean.ts",
47
- "update:version": "tsx ./scripts/update-version.ts"
48
- },
49
- "dependencies": {
50
- "zod": "4.3.5"
51
- },
52
- "devDependencies": {
53
- "@kontent-ai/biome-config": "0.5.1",
54
- "@kontent-ai/eslint-config": "2.2.1",
55
- "@typescript-eslint/eslint-plugin": "8.51.0",
56
- "eslint": "9.39.2",
57
- "@biomejs/biome": "2.3.11",
58
- "@types/node": "25.0.3",
59
- "chalk": "5.6.2",
60
- "typescript": "5.9.3",
61
- "vitest": "4.0.16",
62
- "dotenv-cli": "11.0.0",
63
- "tsx": "4.21.0"
64
- }
65
- }
2
+ "name": "@kontent-ai/core-sdk",
3
+ "version": "12.0.0-preview.40",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/kontent-ai/core-sdk-js"
7
+ },
8
+ "private": false,
9
+ "author": "richard sustek",
10
+ "license": "MIT",
11
+ "description": "Core package with shared / common functionality for Kontent.ai SDKs",
12
+ "keywords": [
13
+ "Kontent.ai",
14
+ "Kontent AI",
15
+ "Kontent SDK Core"
16
+ ],
17
+ "engines": {
18
+ "node": ">=22"
19
+ },
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/public_api.d.ts",
23
+ "default": "./dist/public_api.js"
24
+ },
25
+ "./devkit": {
26
+ "types": "./dist/devkit_api.d.ts",
27
+ "default": "./dist/devkit_api.js"
28
+ },
29
+ "./testkit": {
30
+ "types": "./dist/testkit_api.d.ts",
31
+ "default": "./dist/testkit_api.js"
32
+ }
33
+ },
34
+ "type": "module",
35
+ "sideEffects": false,
36
+ "peerDependencies": {
37
+ "ts-pattern": "^5",
38
+ "zod": "^4"
39
+ },
40
+ "devDependencies": {
41
+ "@biomejs/biome": "2.4.13",
42
+ "@kontent-ai/biome-config": "0.7.0",
43
+ "@kontent-ai/eslint-config": "2.4.1",
44
+ "@types/node": "25.6.0",
45
+ "@vitest/coverage-v8": "4.1.5",
46
+ "eslint": "10.2.1",
47
+ "tsx": "4.21.0",
48
+ "vitest": "4.1.5",
49
+ "@typescript/native-preview": "7.0.0-dev.20260428.1"
50
+ },
51
+ "scripts": {
52
+ "build": "pnpm run lint && pnpm run clean && pnpm run build:ts && pnpm run update:version",
53
+ "build:ts": "tsgo -p tsconfig.build.json",
54
+ "test": "vitest run --config=vitest.config.ts --coverage",
55
+ "test:unit": "vitest run --config=vitest-unit.config.ts",
56
+ "test:integration": "vitest run --config=vitest-integration.config.ts",
57
+ "lint": "pnpm run biome:check && pnpm run eslint",
58
+ "eslint": "eslint lib tests scripts",
59
+ "biome:check": "biome check",
60
+ "biome:fix": "biome check --write",
61
+ "biome:fix:unsafe": "biome check --write --unsafe",
62
+ "clean": "tsx ./scripts/clean.ts",
63
+ "update:version": "tsx ./scripts/update-version.ts"
64
+ }
65
+ }