@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.
Files changed (127) hide show
  1. package/.npmignore +1 -5
  2. package/LICENSE.md +1 -1
  3. package/README.md +177 -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/devkit_api.d.ts +3 -0
  16. package/dist/devkit_api.js +3 -1
  17. package/dist/devkit_api.js.map +1 -1
  18. package/dist/http/http.adapter.d.ts +1 -1
  19. package/dist/http/http.adapter.js +78 -24
  20. package/dist/http/http.adapter.js.map +1 -1
  21. package/dist/http/http.models.d.ts +42 -32
  22. package/dist/http/http.service.js +294 -220
  23. package/dist/http/http.service.js.map +1 -1
  24. package/dist/models/core.models.d.ts +34 -29
  25. package/dist/models/error.models.d.ts +48 -27
  26. package/dist/models/error.models.js +40 -1
  27. package/dist/models/error.models.js.map +1 -1
  28. package/dist/models/json.models.d.ts +13 -4
  29. package/dist/models/json.models.js +10 -1
  30. package/dist/models/json.models.js.map +1 -1
  31. package/dist/models/utility.types.d.ts +16 -0
  32. package/dist/models/utility.types.js +2 -0
  33. package/dist/models/utility.types.js.map +1 -0
  34. package/dist/public_api.d.ts +19 -11
  35. package/dist/public_api.js +15 -6
  36. package/dist/public_api.js.map +1 -1
  37. package/dist/sdk/queries/fetch-sdk-query.d.ts +7 -0
  38. package/dist/sdk/queries/fetch-sdk-query.js +24 -0
  39. package/dist/sdk/queries/fetch-sdk-query.js.map +1 -0
  40. package/dist/sdk/queries/mutation-sdk-query.d.ts +4 -0
  41. package/dist/sdk/queries/mutation-sdk-query.js +17 -0
  42. package/dist/sdk/queries/mutation-sdk-query.js.map +1 -0
  43. package/dist/sdk/queries/paged-fetch-sdk-query.d.ts +6 -0
  44. package/dist/sdk/queries/paged-fetch-sdk-query.js +145 -0
  45. package/dist/sdk/queries/paged-fetch-sdk-query.js.map +1 -0
  46. package/dist/sdk/resolve-query.d.ts +8 -0
  47. package/dist/sdk/resolve-query.js +108 -0
  48. package/dist/sdk/resolve-query.js.map +1 -0
  49. package/dist/sdk/sdk-config.d.ts +3 -0
  50. package/dist/sdk/sdk-config.js +4 -0
  51. package/dist/sdk/sdk-config.js.map +1 -0
  52. package/dist/sdk/sdk-models.d.ts +101 -36
  53. package/dist/sdk/sdk-utils.d.ts +2 -0
  54. package/dist/sdk/sdk-utils.js +9 -0
  55. package/dist/sdk/sdk-utils.js.map +1 -0
  56. package/dist/testkit/poll.utils.d.ts +5 -0
  57. package/dist/testkit/poll.utils.js +24 -0
  58. package/dist/testkit/poll.utils.js.map +1 -0
  59. package/dist/testkit/testkit.utils.d.ts +20 -0
  60. package/dist/testkit/testkit.utils.js +100 -0
  61. package/dist/testkit/testkit.utils.js.map +1 -0
  62. package/dist/testkit_api.d.ts +3 -1
  63. package/dist/testkit_api.js +3 -2
  64. package/dist/testkit_api.js.map +1 -1
  65. package/dist/utils/abort.utils.d.ts +12 -0
  66. package/dist/utils/abort.utils.js +29 -0
  67. package/dist/utils/abort.utils.js.map +1 -0
  68. package/dist/utils/core.utils.d.ts +3 -1
  69. package/dist/utils/core.utils.js +22 -2
  70. package/dist/utils/core.utils.js.map +1 -1
  71. package/dist/utils/error.utils.d.ts +18 -7
  72. package/dist/utils/error.utils.js +35 -7
  73. package/dist/utils/error.utils.js.map +1 -1
  74. package/dist/utils/header.utils.d.ts +6 -1
  75. package/dist/utils/header.utils.js +37 -6
  76. package/dist/utils/header.utils.js.map +1 -1
  77. package/dist/utils/retry.utils.d.ts +16 -11
  78. package/dist/utils/retry.utils.js +131 -63
  79. package/dist/utils/retry.utils.js.map +1 -1
  80. package/dist/utils/sdk-version.utils.js +2 -2
  81. package/dist/utils/sdk-version.utils.js.map +1 -1
  82. package/dist/utils/try-catch.utils.d.ts +15 -0
  83. package/dist/utils/{try.utils.js β†’ try-catch.utils.js} +1 -1
  84. package/dist/utils/try-catch.utils.js.map +1 -0
  85. package/dist/utils/type.utils.d.ts +2 -0
  86. package/dist/utils/type.utils.js +5 -0
  87. package/dist/utils/type.utils.js.map +1 -0
  88. package/dist/utils/url.utils.d.ts +5 -0
  89. package/dist/utils/url.utils.js +10 -0
  90. package/dist/utils/url.utils.js.map +1 -0
  91. package/package.json +61 -64
  92. package/dist/models/utility.models.d.ts +0 -20
  93. package/dist/models/utility.models.js +0 -2
  94. package/dist/models/utility.models.js.map +0 -1
  95. package/dist/sdk/sdk-queries.d.ts +0 -30
  96. package/dist/sdk/sdk-queries.js +0 -152
  97. package/dist/sdk/sdk-queries.js.map +0 -1
  98. package/dist/sdk-info.d.ts +0 -5
  99. package/dist/sdk-info.js +0 -6
  100. package/dist/sdk-info.js.map +0 -1
  101. package/dist/testkit/test.utils.d.ts +0 -15
  102. package/dist/testkit/test.utils.js +0 -42
  103. package/dist/testkit/test.utils.js.map +0 -1
  104. package/dist/utils/try.utils.d.ts +0 -14
  105. package/dist/utils/try.utils.js.map +0 -1
  106. package/lib/devkit/script.utils.ts +0 -12
  107. package/lib/devkit_api.ts +0 -3
  108. package/lib/http/http.adapter.ts +0 -38
  109. package/lib/http/http.models.ts +0 -122
  110. package/lib/http/http.service.ts +0 -320
  111. package/lib/models/core.models.ts +0 -89
  112. package/lib/models/error.models.ts +0 -83
  113. package/lib/models/json.models.ts +0 -9
  114. package/lib/models/utility.models.ts +0 -21
  115. package/lib/public_api.ts +0 -45
  116. package/lib/sdk/sdk-models.ts +0 -85
  117. package/lib/sdk/sdk-queries.ts +0 -232
  118. package/lib/sdk-info.ts +0 -5
  119. package/lib/testkit/test.utils.ts +0 -79
  120. package/lib/testkit/testkit.models.ts +0 -7
  121. package/lib/testkit_api.ts +0 -3
  122. package/lib/utils/core.utils.ts +0 -3
  123. package/lib/utils/error.utils.ts +0 -48
  124. package/lib/utils/header.utils.ts +0 -40
  125. package/lib/utils/retry.utils.ts +0 -156
  126. package/lib/utils/sdk-version.utils.ts +0 -16
  127. package/lib/utils/try.utils.ts +0 -30
@@ -1,13 +1,41 @@
1
- import { isNotUndefined } from "./core.utils.js";
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 isErrorOfType("invalidResponse", error) && error.status === 404;
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 getErrorMessage({ method, url, adapterResponse, kontentErrorResponse, }) {
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
- function isErrorOfType(reason, error) {
10
- return error.reason === reason;
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(isNotUndefined);
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 `Response failed with status '${adapterResponse.status}' and status text '${adapterResponse.statusText}'.${kontentErrorResponse.message}${validationErrorMessage ? ` ${validationErrorMessage}` : ""}`;
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":"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";
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.find((header) => header.name.toLowerCase() === "Retry-After".toLowerCase());
23
+ const retryAfterHeader = findHeaderByName(headers, "Retry-After");
9
24
  if (!retryAfterHeader) {
10
25
  return undefined;
11
26
  }
12
- const numberValue = +retryAfterHeader.value;
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,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 { 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 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;
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 getDefaultDelayBetweenRetriesMs = (error) => {
4
- if (error.reason === "notFound" || error.reason === "invalidResponse") {
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 runWithRetryAsync(data) {
20
- const { success, response, error } = await data.funcAsync();
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
- options: data.retryStrategyOptions,
22
+ retryStrategyOptions: data.retryStrategyOptions,
32
23
  });
33
24
  if (!retryResult.canRetry) {
34
25
  return {
35
26
  success: false,
36
- error: {
37
- ...error,
38
- retryAttempt: data.retryAttempt,
39
- retryStrategyOptions: data.retryStrategyOptions,
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
- logRetryAttempt(data.retryStrategyOptions, newRetryAttempt, data.url);
44
- await waitAsync(retryResult.retryInMs);
45
- return await runWithRetryAsync({
46
- funcAsync: data.funcAsync,
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
- requestHeaders: data.requestHeaders,
51
- method: data.method,
53
+ abortSignal: data.abortSignal,
52
54
  });
53
55
  }
54
- export function toRequiredRetryStrategyOptions(options) {
56
+ export function resolveDefaultRetryStrategyOptions(options) {
55
57
  const maxRetries = options?.maxRetries ?? defaultMaxRetries;
56
- return {
58
+ const resolvedOptions = {
57
59
  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
- },
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 getDefaultRetryAttemptLogMessage(retryAttempt, maxRetries, url) {
73
- return `Retry attempt '${retryAttempt}' from a maximum of '${maxRetries}' retries. Requested url: '${url}'`;
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
- canRetry: false,
77
+ isAborted: false,
87
78
  };
88
79
  }
89
- if (!options.canRetryError(error)) {
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: options.getDelayBetweenRetriesMs(error),
120
+ retryInMs: retryStrategyOptions.getDelayBetweenRetriesMs(error),
97
121
  };
98
122
  }
99
- function getRetryFromHeaderMs({ error }) {
100
- const retryAfterHeaderValue = getRetryAfterHeaderValue(error.responseHeaders);
101
- if (retryAfterHeaderValue) {
102
- return retryAfterHeaderValue * 1000;
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 0;
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":"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"}
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 chalk from "chalk";
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 '${chalk.yellow(filePath)}' to '${chalk.green(version)}'`);
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,KAAK,MAAM,OAAO,CAAC;AAE1B,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,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChG,CAAC"}
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>;
@@ -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,2 @@
1
+ import { z } from "zod";
2
+ export declare function getCodenameSchema<const TCodenames extends string>(codenames: readonly TCodenames[] | undefined): z.ZodType<TCodenames>;
@@ -0,0 +1,5 @@
1
+ import { z } from "zod";
2
+ export function getCodenameSchema(codenames) {
3
+ return (codenames && codenames.length > 0 ? z.literal(codenames) : z.string());
4
+ }
5
+ //# sourceMappingURL=type.utils.js.map
@@ -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,5 @@
1
+ export declare function getEndpointUrl({ environmentId, path, baseUrl, }: {
2
+ readonly environmentId: string;
3
+ readonly path: string;
4
+ readonly baseUrl: string;
5
+ }): string;
@@ -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"}