@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,247 +1,332 @@
1
- import { sdkInfo } from "../sdk-info.js";
2
- import { isNotUndefined } from "../utils/core.utils.js";
3
- import { getErrorMessage } from "../utils/error.utils.js";
4
- import { getSdkIdHeader } from "../utils/header.utils.js";
5
- import { runWithRetryAsync, toRequiredRetryStrategyOptions } from "../utils/retry.utils.js";
6
- import { tryCatch, tryCatchAsync } from "../utils/try.utils.js";
1
+ import { match, P } from "ts-pattern";
2
+ import { coreSdkInfo } from "../core-sdk-info.js";
3
+ import { isBlob, isDefined } from "../utils/core.utils.js";
4
+ import { createSdkError, isAdapterAbortError, isAdapterParseError, isKontentErrorResponseData, isKontentSdkError, toInvalidResponseMessage, } from "../utils/error.utils.js";
5
+ import { createSdkIdHeader, findHeaderByName, isApplicationJsonResponseType } from "../utils/header.utils.js";
6
+ import { resolveDefaultRetryStrategyOptions, runWithRetry } from "../utils/retry.utils.js";
7
+ import { tryCatch, tryCatchAsync } from "../utils/try-catch.utils.js";
7
8
  import { getDefaultHttpAdapter } from "./http.adapter.js";
8
9
  export function getDefaultHttpService(config) {
9
- const withUnknownErrorHandlingAsync = async ({ url, funcAsync, }) => {
10
- const { success, data, error } = await tryCatchAsync(funcAsync);
11
- if (success) {
12
- return data;
13
- }
14
- return {
15
- success: false,
16
- error: {
17
- reason: "unknown",
18
- message: "Unknown error. See the error object for more details.",
19
- url: url,
20
- originalError: error,
21
- },
22
- };
23
- };
24
- const resolveRequestAsync = async ({ options, resolveDataAsync, }) => {
25
- return await withUnknownErrorHandlingAsync({
26
- url: options.url,
27
- funcAsync: async () => {
28
- const adapter = config?.adapter ?? getDefaultHttpAdapter();
29
- const getCombinedRequestHeaders = () => {
30
- return getRequestHeaders([...(config?.requestHeaders ?? []), ...(options.requestHeaders ?? [])], options.body);
31
- };
32
- const getRequestBody = () => {
33
- if (options.body === null) {
34
- return {
35
- success: true,
36
- data: null,
37
- };
38
- }
39
- if (options.body instanceof Blob) {
40
- return {
41
- success: true,
42
- data: options.body,
43
- };
44
- }
45
- const { success, data: parsedBody, error } = tryCatch(() => JSON.stringify(options.body));
46
- if (!success) {
47
- return {
48
- success: false,
49
- error: {
50
- message: "Failed to stringify body of request.",
51
- url: options.url,
52
- reason: "invalidBody",
53
- originalError: error,
54
- },
55
- };
56
- }
57
- return {
58
- success: true,
59
- data: parsedBody,
60
- };
61
- };
62
- const getUrl = () => {
63
- const { success, data: parsedUrl, error } = tryCatch(() => new URL(options.url));
64
- if (!success) {
65
- return {
66
- success: false,
67
- error: {
68
- message: `Failed to parse url '${options.url}'.`,
69
- url: options.url,
70
- reason: "invalidUrl",
71
- originalError: error,
72
- },
73
- };
74
- }
75
- return {
76
- success: true,
77
- data: parsedUrl,
78
- };
79
- };
80
- const requestHeaders = getCombinedRequestHeaders();
81
- const retryStrategyOptions = toRequiredRetryStrategyOptions(config?.retryStrategy);
82
- const withRetryAsync = async (funcAsync) => {
83
- return await runWithRetryAsync({
84
- url: options.url,
85
- retryStrategyOptions,
86
- retryAttempt: 0,
87
- requestHeaders,
88
- method: options.method,
89
- funcAsync: async () => {
90
- return await funcAsync();
91
- },
92
- });
93
- };
94
- const { success: urlParsedSuccess, data: parsedUrl, error: urlError } = getUrl();
95
- if (!urlParsedSuccess) {
96
- return {
97
- success: false,
98
- error: urlError,
99
- };
100
- }
101
- const { success: requestBodyParsedSuccess, data: requestBody, error: requestBodyError } = getRequestBody();
102
- if (!requestBodyParsedSuccess) {
103
- return {
104
- success: false,
105
- error: requestBodyError,
106
- };
107
- }
108
- const getResponseAsync = async () => {
109
- return await adapter.requestAsync({
110
- url: parsedUrl.toString(),
111
- method: options.method,
112
- requestHeaders,
113
- body: requestBody,
114
- });
115
- };
116
- const getErrorForInvalidResponseAsync = async (response) => {
117
- const sharedErrorData = {
118
- message: getErrorMessage({
119
- url: options.url,
120
- adapterResponse: response,
121
- method: options.method,
122
- }),
123
- url: options.url,
124
- };
125
- if (response.status === 404) {
126
- const error = {
127
- ...sharedErrorData,
128
- reason: "notFound",
129
- isValidResponse: response.isValidResponse,
130
- responseHeaders: response.responseHeaders,
131
- status: 404,
132
- statusText: response.statusText,
133
- kontentErrorResponse: await getKontentErrorDataAsync(response),
134
- };
135
- return error;
136
- }
137
- const error = {
138
- ...sharedErrorData,
139
- reason: "invalidResponse",
140
- isValidResponse: response.isValidResponse,
141
- responseHeaders: response.responseHeaders,
142
- status: response.status,
143
- statusText: response.statusText,
144
- kontentErrorResponse: await getKontentErrorDataAsync(response),
145
- };
146
- return error;
147
- };
148
- const resolveResponseAsync = async (response) => {
149
- if (!response.isValidResponse) {
150
- return {
151
- success: false,
152
- error: await getErrorForInvalidResponseAsync(response),
153
- };
154
- }
155
- return {
156
- success: true,
157
- response: {
158
- data: await resolveDataAsync(response),
159
- body: options.body,
160
- method: options.method,
161
- adapterResponse: {
162
- isValidResponse: response.isValidResponse,
163
- responseHeaders: response.responseHeaders,
164
- status: response.status,
165
- statusText: response.statusText,
166
- },
167
- requestHeaders: requestHeaders,
168
- },
169
- };
170
- };
171
- return await withRetryAsync(async () => await resolveResponseAsync(await getResponseAsync()));
172
- },
173
- });
10
+ const adapter = resolveHttpAdapter(config);
11
+ const executeWithAdapter = async ({ parsedUrl, method, requestHeaders, parsedBody, abortSignal, }) => {
12
+ return (await adapter.executeRequest({
13
+ url: parsedUrl,
14
+ method,
15
+ requestHeaders,
16
+ body: parsedBody ?? null,
17
+ abortSignal,
18
+ }));
174
19
  };
175
20
  return {
176
- requestAsync: async (options) => {
177
- return await resolveRequestAsync({
21
+ request: async (options) => {
22
+ return await processHttpRequest({
23
+ config,
178
24
  options,
179
- resolveDataAsync: async (response) => {
180
- return (await response.toJsonAsync());
181
- },
25
+ runAdapterFunc: executeWithAdapter,
182
26
  });
183
27
  },
184
- downloadFileAsync: async (options) => {
185
- return await resolveRequestAsync({
28
+ downloadFile: async (options) => {
29
+ return await processHttpRequest({
30
+ config,
186
31
  options: {
187
32
  ...options,
188
33
  method: "GET",
189
- body: null,
190
34
  },
191
- resolveDataAsync: async (response) => {
192
- return await response.toBlobAsync();
35
+ runAdapterFunc: async ({ parsedUrl, requestHeaders }) => {
36
+ return await adapter.downloadFile({
37
+ url: parsedUrl,
38
+ requestHeaders,
39
+ abortSignal: options.abortSignal,
40
+ });
193
41
  },
194
42
  });
195
43
  },
196
- uploadFileAsync: async (options) => {
197
- return await resolveRequestAsync({
44
+ uploadFile: async (options) => {
45
+ return await processHttpRequest({
46
+ config,
198
47
  options,
199
- resolveDataAsync: async (response) => {
200
- return (await response.toJsonAsync());
201
- },
48
+ runAdapterFunc: executeWithAdapter,
202
49
  });
203
50
  },
204
51
  };
205
52
  }
206
- async function getKontentErrorDataAsync(response) {
207
- if (response.responseHeaders
208
- .find((header) => header.name.toLowerCase() === "Content-Type".toLowerCase())
209
- ?.value.toLowerCase()
210
- .includes("application/json")) {
211
- const json = (await response.toJsonAsync());
212
- // We check the existence of 'message' property which should always be set when the error is a Kontent API error
213
- if (!json.message) {
214
- return undefined;
215
- }
53
+ function resolveHttpAdapter(config) {
54
+ const defaultAdapter = getDefaultHttpAdapter();
55
+ return {
56
+ downloadFile: config?.adapter?.downloadFile ?? defaultAdapter.downloadFile,
57
+ executeRequest: config?.adapter?.executeRequest ?? defaultAdapter.executeRequest,
58
+ };
59
+ }
60
+ async function processHttpRequest({ options, runAdapterFunc, config, }) {
61
+ const retryStrategyOptions = resolveDefaultRetryStrategyOptions(config?.retryStrategy);
62
+ const { success, data: parsedRequest, error } = parseAndValidateRequest({ options, retryStrategyOptions, config });
63
+ if (!success) {
64
+ return {
65
+ success: false,
66
+ error: error,
67
+ };
68
+ }
69
+ return await runWithRetry({
70
+ retryAttempt: 0,
71
+ abortSignal: options.abortSignal,
72
+ func: async (retryAttempt) => {
73
+ const responseOrError = await runAdapterRequest({
74
+ parsedUrl: parsedRequest.parsedUrl,
75
+ method: options.method,
76
+ requestHeaders: parsedRequest.requestHeaders,
77
+ parsedBody: parsedRequest.parsedBody,
78
+ runAdapterRequest: runAdapterFunc,
79
+ abortSignal: options.abortSignal,
80
+ retryAttempt,
81
+ retryStrategyOptions,
82
+ });
83
+ if (isKontentSdkError(responseOrError)) {
84
+ return {
85
+ success: false,
86
+ error: responseOrError,
87
+ };
88
+ }
89
+ return mapAdapterResponse({
90
+ retryStrategyOptions,
91
+ method: options.method,
92
+ requestHeaders: parsedRequest.requestHeaders,
93
+ response: responseOrError,
94
+ retryAttempt,
95
+ ...(options.body === undefined ? {} : { requestBody: options.body }),
96
+ });
97
+ },
98
+ url: parsedRequest.parsedUrl,
99
+ retryStrategyOptions,
100
+ });
101
+ }
102
+ function createAdapterError({ url, error, retryAttempt, retryStrategyOptions, }) {
103
+ return match(error)
104
+ .returnType()
105
+ .when(isAdapterAbortError, (abortError) => createSdkError({
106
+ baseErrorData: {
107
+ message: `Adapter has aborted the request for url '${url.toString()}'. See the error object for more details.`,
108
+ url: url,
109
+ retryStrategyOptions,
110
+ retryAttempt,
111
+ },
112
+ details: {
113
+ reason: "aborted",
114
+ originalError: abortError,
115
+ },
116
+ }))
117
+ .when(isAdapterParseError, (parseError) => createSdkError({
118
+ baseErrorData: {
119
+ message: `Adapter failed to parse the response for url '${url.toString()}'. See the error object for more details.`,
120
+ url: url,
121
+ retryStrategyOptions,
122
+ retryAttempt,
123
+ },
124
+ details: {
125
+ reason: "parseError",
126
+ originalError: parseError,
127
+ },
128
+ }))
129
+ .otherwise(() => createSdkError({
130
+ baseErrorData: {
131
+ message: `Adapter failed to execute the request for url '${url.toString()}'. See the error object for more details.`,
132
+ url: url,
133
+ retryStrategyOptions,
134
+ retryAttempt,
135
+ },
136
+ details: {
137
+ reason: "adapterError",
138
+ originalError: error,
139
+ },
140
+ }));
141
+ }
142
+ function mapAdapterResponse({ response, method, requestHeaders, requestBody, retryAttempt, retryStrategyOptions, }) {
143
+ if (!isSuccessfulResponse(response)) {
216
144
  return {
217
- ...json,
218
- message: json.message,
145
+ success: false,
146
+ error: createInvalidResponseError({ response, method, retryAttempt, retryStrategyOptions }),
219
147
  };
220
148
  }
149
+ return {
150
+ success: true,
151
+ response: {
152
+ payload: response.payload,
153
+ method: method,
154
+ adapterResponse: response,
155
+ requestHeaders: requestHeaders,
156
+ ...(requestBody === undefined ? {} : { body: requestBody }),
157
+ },
158
+ };
159
+ }
160
+ async function runAdapterRequest({ parsedUrl, method, requestHeaders, parsedBody, runAdapterRequest, abortSignal, retryAttempt, retryStrategyOptions, }) {
161
+ const { error, data } = await tryCatchAsync(async () => await runAdapterRequest({
162
+ parsedUrl,
163
+ method,
164
+ requestHeaders,
165
+ parsedBody,
166
+ abortSignal,
167
+ }));
168
+ return data ?? createAdapterError({ url: parsedUrl, error, retryAttempt, retryStrategyOptions });
169
+ }
170
+ function isSuccessfulResponse(response) {
171
+ return response.status >= 200 && response.status < 300;
172
+ }
173
+ function createInvalidResponseError({ response, method, retryAttempt, retryStrategyOptions, }) {
174
+ const kontentErrorData = tryExtractKontentErrorData(response);
175
+ return createSdkError({
176
+ baseErrorData: {
177
+ message: toInvalidResponseMessage({
178
+ url: response.url,
179
+ adapterResponse: response,
180
+ method: method,
181
+ kontentErrorData: kontentErrorData,
182
+ }),
183
+ url: response.url,
184
+ retryAttempt,
185
+ retryStrategyOptions,
186
+ },
187
+ details: extractInvalidResponseErrorDetails({ response, kontentErrorData }),
188
+ });
189
+ }
190
+ function extractInvalidResponseErrorDetails({ response, kontentErrorData, }) {
191
+ const reason = match(response.status)
192
+ .returnType()
193
+ .with(401, () => "unauthorized")
194
+ .with(404, () => "notFound")
195
+ .otherwise(() => "invalidResponse");
196
+ return {
197
+ reason,
198
+ responseHeaders: response.responseHeaders,
199
+ status: response.status,
200
+ statusText: response.statusText,
201
+ kontentErrorResponse: kontentErrorData,
202
+ };
203
+ }
204
+ function parseRequestBody({ requestBody, url, retryStrategyOptions, }) {
205
+ return match(requestBody)
206
+ .returnType()
207
+ .with(P.nullish, () => ({
208
+ success: true,
209
+ data: null,
210
+ }))
211
+ .when(isBlob, (blob) => ({
212
+ success: true,
213
+ data: blob,
214
+ }))
215
+ .otherwise((m) => stringifyJson({ url: url, retryStrategyOptions, json: m }));
216
+ }
217
+ function stringifyJson({ url, retryStrategyOptions, json, }) {
218
+ const { success, data, error } = tryCatch(() => JSON.stringify(json));
219
+ if (success) {
220
+ return {
221
+ success: true,
222
+ data,
223
+ };
224
+ }
225
+ return {
226
+ success: false,
227
+ error: createSdkError({
228
+ baseErrorData: {
229
+ message: "Failed to stringify body of the request.",
230
+ url: url,
231
+ retryStrategyOptions,
232
+ retryAttempt: 0,
233
+ },
234
+ details: {
235
+ reason: "invalidBody",
236
+ originalError: error,
237
+ },
238
+ }),
239
+ };
240
+ }
241
+ function tryExtractKontentErrorData(response) {
242
+ if (isApplicationJsonResponseType(response.responseHeaders) && isKontentErrorResponseData(response.payload)) {
243
+ return response.payload;
244
+ }
221
245
  return undefined;
222
246
  }
223
- function getRequestHeaders(headers, body) {
224
- const existingContentTypeHeader = headers?.find((header) => header.name.toLowerCase() === "Content-Type".toLowerCase());
225
- const existingSdkVersionHeader = headers?.find((header) => header.name.toLowerCase() === "X-KC-SDKID".toLowerCase());
226
- const contentTypeHeader = existingContentTypeHeader
227
- ? undefined
228
- : {
229
- name: "Content-Type",
230
- value: body instanceof Blob ? body.type : "application/json",
247
+ function isStringUrl(url) {
248
+ return typeof url === "string";
249
+ }
250
+ function parseAndValidateRequest({ options, retryStrategyOptions, config, }) {
251
+ const { success: urlParsedSuccess, data: parsedUrl, error: urlError } = parseUrl({ url: options.url, retryStrategyOptions });
252
+ if (!urlParsedSuccess) {
253
+ return {
254
+ success: false,
255
+ error: urlError,
256
+ };
257
+ }
258
+ const { success: requestBodyParsedSuccess, data: parsedRequestBody, error: requestBodyError, } = parseRequestBody({ requestBody: options.body ?? null, url: parsedUrl, retryStrategyOptions });
259
+ if (!requestBodyParsedSuccess) {
260
+ return {
261
+ success: false,
262
+ error: requestBodyError,
263
+ };
264
+ }
265
+ return {
266
+ success: true,
267
+ data: {
268
+ parsedUrl,
269
+ parsedBody: parsedRequestBody,
270
+ requestHeaders: buildRequestHeaders({
271
+ configHeaders: config?.requestHeaders,
272
+ optionHeaders: options.requestHeaders,
273
+ body: options.body ?? null,
274
+ }),
275
+ },
276
+ };
277
+ }
278
+ function parseUrl({ url, retryStrategyOptions, }) {
279
+ if (!isStringUrl(url)) {
280
+ return {
281
+ success: true,
282
+ data: url,
283
+ };
284
+ }
285
+ const { success, data: parsedUrl, error } = tryCatch(() => new URL(url));
286
+ if (success) {
287
+ return {
288
+ success: true,
289
+ data: parsedUrl,
231
290
  };
232
- const sdkVersionHeader = existingSdkVersionHeader
233
- ? undefined
234
- : getSdkIdHeader({
235
- host: sdkInfo.host,
236
- name: sdkInfo.name,
237
- version: sdkInfo.version,
238
- });
239
- const contentLengthHeader = body instanceof Blob
240
- ? {
241
- name: "Content-Length",
242
- value: body.size.toString(),
243
- }
244
- : undefined;
245
- return [...(headers ?? []), contentTypeHeader, contentLengthHeader, sdkVersionHeader].filter(isNotUndefined);
291
+ }
292
+ return {
293
+ success: false,
294
+ error: createSdkError({
295
+ baseErrorData: {
296
+ message: `Failed to parse url '${url}'.`,
297
+ url: url,
298
+ retryStrategyOptions,
299
+ retryAttempt: 0,
300
+ },
301
+ details: {
302
+ reason: "invalidUrl",
303
+ originalError: error,
304
+ },
305
+ }),
306
+ };
307
+ }
308
+ function buildRequestHeaders({ configHeaders, optionHeaders, body, }) {
309
+ const combinedHeaders = [...(configHeaders ?? []), ...(optionHeaders ?? [])];
310
+ const existingContentTypeHeader = findHeaderByName(combinedHeaders, "Content-Type");
311
+ const existingSdkVersionHeader = findHeaderByName(combinedHeaders, "X-KC-SDKID");
312
+ const contentTypeHeader = match({ existingContentTypeHeader, body })
313
+ .returnType()
314
+ .with({ existingContentTypeHeader: P.nullish, body: P.nonNullable }, ({ body }) => createDefaultContentTypeHeader(body))
315
+ .otherwise(() => undefined);
316
+ const sdkVersionHeader = existingSdkVersionHeader ? undefined : createSdkIdHeader(coreSdkInfo);
317
+ const contentLengthHeader = isBlob(body) ? createDefaultContentLengthHeader(body) : undefined;
318
+ return [...combinedHeaders, ...[contentTypeHeader, contentLengthHeader, sdkVersionHeader].filter(isDefined)];
319
+ }
320
+ function createDefaultContentTypeHeader(body) {
321
+ return {
322
+ name: "Content-Type",
323
+ value: isBlob(body) ? body.type : "application/json",
324
+ };
325
+ }
326
+ function createDefaultContentLengthHeader(body) {
327
+ return {
328
+ name: "Content-Length",
329
+ value: body.size.toString(),
330
+ };
246
331
  }
247
332
  //# sourceMappingURL=http.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.service.js","sourceRoot":"","sources":["../../lib/http/http.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.service.js","sourceRoot":"","sources":["../../lib/http/http.service.ts"],"names":[],"mappings":"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"}