@planqk/planqk-service-sdk 2.1.1 → 2.2.0

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 (173) hide show
  1. package/.gitlab-ci.yml +8 -39
  2. package/README-node.md +16 -12
  3. package/README.md +30 -41
  4. package/dist/sdk/Client.d.ts +10 -4
  5. package/dist/sdk/Client.js +46 -4
  6. package/dist/sdk/api/index.d.ts +2 -3
  7. package/dist/sdk/api/index.js +2 -3
  8. package/dist/sdk/api/resources/index.d.ts +2 -2
  9. package/dist/sdk/api/resources/index.js +2 -2
  10. package/dist/sdk/api/resources/serviceApi/client/Client.d.ts +41 -55
  11. package/dist/sdk/api/resources/serviceApi/client/Client.js +131 -227
  12. package/dist/sdk/api/resources/serviceApi/index.d.ts +2 -2
  13. package/dist/sdk/api/resources/serviceApi/index.js +2 -2
  14. package/dist/sdk/api/resources/serviceApi/types/GetResultResponse.d.ts +13 -3
  15. package/dist/sdk/api/resources/serviceApi/types/index.d.ts +1 -4
  16. package/dist/sdk/api/resources/serviceApi/types/index.js +1 -4
  17. package/dist/sdk/api/types/ServiceExecution.d.ts +12 -2
  18. package/dist/sdk/api/types/ServiceExecution.js +12 -0
  19. package/dist/sdk/api/types/index.d.ts +2 -6
  20. package/dist/sdk/api/types/index.js +2 -6
  21. package/dist/sdk/core/auth/BasicAuth.js +3 -3
  22. package/dist/sdk/core/auth/index.d.ts +2 -2
  23. package/dist/sdk/core/auth/index.js +4 -4
  24. package/dist/sdk/core/base64.d.ts +2 -0
  25. package/dist/sdk/core/base64.js +26 -0
  26. package/dist/sdk/core/fetcher/APIResponse.d.ts +10 -0
  27. package/dist/sdk/core/fetcher/BinaryResponse.d.ts +20 -0
  28. package/dist/sdk/core/fetcher/BinaryResponse.js +17 -0
  29. package/dist/sdk/core/fetcher/Fetcher.d.ts +5 -4
  30. package/dist/sdk/core/fetcher/Fetcher.js +41 -22
  31. package/dist/sdk/core/fetcher/Headers.d.ts +2 -0
  32. package/dist/sdk/core/fetcher/Headers.js +85 -0
  33. package/dist/sdk/core/fetcher/HttpResponsePromise.d.ts +58 -0
  34. package/dist/sdk/core/fetcher/HttpResponsePromise.js +94 -0
  35. package/dist/sdk/core/fetcher/RawResponse.d.ts +29 -0
  36. package/dist/sdk/core/fetcher/RawResponse.js +44 -0
  37. package/dist/sdk/core/fetcher/ResponseWithBody.d.ts +4 -0
  38. package/dist/sdk/core/fetcher/ResponseWithBody.js +6 -0
  39. package/dist/sdk/core/fetcher/createRequestUrl.d.ts +1 -1
  40. package/dist/sdk/core/fetcher/createRequestUrl.js +3 -7
  41. package/dist/sdk/core/fetcher/getErrorResponseBody.d.ts +1 -0
  42. package/dist/sdk/core/fetcher/getErrorResponseBody.js +32 -0
  43. package/dist/sdk/core/fetcher/getFetchFn.d.ts +1 -4
  44. package/dist/sdk/core/fetcher/getFetchFn.js +1 -52
  45. package/dist/sdk/core/fetcher/getRequestBody.js +2 -1
  46. package/dist/sdk/core/fetcher/getResponseBody.js +34 -30
  47. package/dist/sdk/core/fetcher/index.d.ts +9 -5
  48. package/dist/sdk/core/fetcher/index.js +13 -7
  49. package/dist/sdk/core/fetcher/makeRequest.js +3 -3
  50. package/dist/sdk/core/fetcher/requestWithRetries.js +14 -5
  51. package/dist/sdk/core/headers.d.ts +3 -0
  52. package/dist/sdk/core/headers.js +29 -0
  53. package/dist/sdk/core/index.d.ts +5 -3
  54. package/dist/sdk/core/index.js +28 -3
  55. package/dist/sdk/core/json.d.ts +15 -0
  56. package/dist/sdk/core/json.js +24 -0
  57. package/dist/sdk/core/runtime/index.d.ts +1 -1
  58. package/dist/sdk/core/runtime/index.js +2 -2
  59. package/dist/sdk/core/runtime/runtime.d.ts +1 -1
  60. package/dist/sdk/core/runtime/runtime.js +49 -40
  61. package/dist/sdk/core/url/index.d.ts +2 -0
  62. package/dist/sdk/core/url/index.js +7 -0
  63. package/dist/sdk/core/url/join.d.ts +1 -0
  64. package/dist/sdk/core/url/join.js +49 -0
  65. package/dist/sdk/core/url/qs.d.ts +6 -0
  66. package/dist/sdk/core/url/qs.js +67 -0
  67. package/dist/sdk/errors/PlanqkServiceApiError.d.ts +4 -1
  68. package/dist/sdk/errors/PlanqkServiceApiError.js +7 -8
  69. package/dist/sdk/errors/PlanqkServiceApiTimeoutError.d.ts +1 -1
  70. package/dist/sdk/errors/PlanqkServiceApiTimeoutError.js +2 -2
  71. package/dist/sdk/errors/index.d.ts +2 -2
  72. package/dist/sdk/errors/index.js +4 -4
  73. package/dist/sdk/index.d.ts +4 -4
  74. package/dist/sdk/index.js +9 -9
  75. package/fern/fern.config.json +1 -1
  76. package/fern/generators.yml +2 -2
  77. package/fern/openapi/openapi.yml +41 -131
  78. package/notebooks/python-sdk.ipynb +1 -1
  79. package/package.json +2 -3
  80. package/planqk/service/_version.py +1 -1
  81. package/pyproject.toml +1 -1
  82. package/src/index.test.ts +29 -16
  83. package/src/sdk/Client.ts +27 -7
  84. package/src/sdk/api/index.ts +2 -3
  85. package/src/sdk/api/resources/index.ts +2 -2
  86. package/src/sdk/api/resources/serviceApi/client/Client.ts +223 -250
  87. package/src/sdk/api/resources/serviceApi/index.ts +2 -2
  88. package/src/sdk/api/resources/serviceApi/types/GetResultResponse.ts +15 -3
  89. package/src/sdk/api/resources/serviceApi/types/index.ts +1 -4
  90. package/src/sdk/api/types/ServiceExecution.ts +13 -3
  91. package/src/sdk/api/types/index.ts +2 -6
  92. package/src/sdk/core/auth/BasicAuth.ts +3 -3
  93. package/src/sdk/core/auth/index.ts +2 -2
  94. package/src/sdk/core/base64.ts +27 -0
  95. package/src/sdk/core/fetcher/APIResponse.ts +11 -0
  96. package/src/sdk/core/fetcher/BinaryResponse.ts +36 -0
  97. package/src/sdk/core/fetcher/Fetcher.ts +46 -26
  98. package/src/sdk/core/fetcher/Headers.ts +93 -0
  99. package/src/sdk/core/fetcher/HttpResponsePromise.ts +116 -0
  100. package/src/sdk/core/fetcher/RawResponse.ts +61 -0
  101. package/src/sdk/core/fetcher/ResponseWithBody.ts +7 -0
  102. package/src/sdk/core/fetcher/createRequestUrl.ts +4 -8
  103. package/src/sdk/core/fetcher/getErrorResponseBody.ts +32 -0
  104. package/src/sdk/core/fetcher/getFetchFn.ts +2 -24
  105. package/src/sdk/core/fetcher/getRequestBody.ts +3 -1
  106. package/src/sdk/core/fetcher/getResponseBody.ts +38 -27
  107. package/src/sdk/core/fetcher/index.ts +9 -5
  108. package/src/sdk/core/fetcher/makeRequest.ts +2 -2
  109. package/src/sdk/core/fetcher/requestWithRetries.ts +18 -6
  110. package/src/sdk/core/fetcher/signals.ts +1 -1
  111. package/src/sdk/core/headers.ts +35 -0
  112. package/src/sdk/core/index.ts +5 -3
  113. package/src/sdk/core/json.ts +27 -0
  114. package/src/sdk/core/runtime/index.ts +1 -1
  115. package/src/sdk/core/runtime/runtime.ts +60 -53
  116. package/src/sdk/core/url/index.ts +2 -0
  117. package/src/sdk/core/url/join.ts +55 -0
  118. package/src/sdk/core/url/qs.ts +74 -0
  119. package/src/sdk/errors/PlanqkServiceApiError.ts +21 -11
  120. package/src/sdk/errors/PlanqkServiceApiTimeoutError.ts +2 -2
  121. package/src/sdk/errors/index.ts +2 -2
  122. package/src/sdk/index.ts +4 -4
  123. package/dist/sdk/api/errors/BadRequestError.d.ts +0 -7
  124. package/dist/sdk/api/errors/BadRequestError.js +0 -51
  125. package/dist/sdk/api/errors/ForbiddenError.d.ts +0 -7
  126. package/dist/sdk/api/errors/ForbiddenError.js +0 -51
  127. package/dist/sdk/api/errors/InternalServerError.d.ts +0 -7
  128. package/dist/sdk/api/errors/InternalServerError.js +0 -51
  129. package/dist/sdk/api/errors/NotFoundError.d.ts +0 -7
  130. package/dist/sdk/api/errors/NotFoundError.js +0 -51
  131. package/dist/sdk/api/errors/UnauthorizedError.d.ts +0 -7
  132. package/dist/sdk/api/errors/UnauthorizedError.js +0 -51
  133. package/dist/sdk/api/errors/index.d.ts +0 -5
  134. package/dist/sdk/api/errors/index.js +0 -21
  135. package/dist/sdk/api/resources/serviceApi/types/GetResultResponseEmbedded.d.ts +0 -7
  136. package/dist/sdk/api/resources/serviceApi/types/GetResultResponseEmbedded.js +0 -5
  137. package/dist/sdk/api/resources/serviceApi/types/GetResultResponseLinks.d.ts +0 -7
  138. package/dist/sdk/api/resources/serviceApi/types/GetResultResponseLinks.js +0 -5
  139. package/dist/sdk/api/resources/serviceApi/types/HealthCheckResponse.d.ts +0 -7
  140. package/dist/sdk/api/resources/serviceApi/types/HealthCheckResponse.js +0 -5
  141. package/dist/sdk/api/types/InputData.d.ts +0 -4
  142. package/dist/sdk/api/types/InputData.js +0 -5
  143. package/dist/sdk/api/types/InputDataRef.d.ts +0 -8
  144. package/dist/sdk/api/types/InputDataRef.js +0 -5
  145. package/dist/sdk/api/types/InputParams.d.ts +0 -4
  146. package/dist/sdk/api/types/InputParams.js +0 -5
  147. package/dist/sdk/api/types/ServiceExecutionStatus.d.ts +0 -12
  148. package/dist/sdk/api/types/ServiceExecutionStatus.js +0 -14
  149. package/dist/sdk/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.d.ts +0 -30
  150. package/dist/sdk/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.js +0 -232
  151. package/dist/sdk/core/fetcher/stream-wrappers/NodePre18StreamWrapper.d.ts +0 -21
  152. package/dist/sdk/core/fetcher/stream-wrappers/NodePre18StreamWrapper.js +0 -91
  153. package/dist/sdk/core/fetcher/stream-wrappers/UndiciStreamWrapper.d.ts +0 -31
  154. package/dist/sdk/core/fetcher/stream-wrappers/UndiciStreamWrapper.js +0 -214
  155. package/dist/sdk/core/fetcher/stream-wrappers/chooseStreamWrapper.d.ts +0 -18
  156. package/dist/sdk/core/fetcher/stream-wrappers/chooseStreamWrapper.js +0 -48
  157. package/src/sdk/api/errors/BadRequestError.ts +0 -16
  158. package/src/sdk/api/errors/ForbiddenError.ts +0 -16
  159. package/src/sdk/api/errors/InternalServerError.ts +0 -16
  160. package/src/sdk/api/errors/NotFoundError.ts +0 -16
  161. package/src/sdk/api/errors/UnauthorizedError.ts +0 -16
  162. package/src/sdk/api/errors/index.ts +0 -5
  163. package/src/sdk/api/resources/serviceApi/types/GetResultResponseEmbedded.ts +0 -9
  164. package/src/sdk/api/resources/serviceApi/types/GetResultResponseLinks.ts +0 -9
  165. package/src/sdk/api/resources/serviceApi/types/HealthCheckResponse.ts +0 -8
  166. package/src/sdk/api/types/InputData.ts +0 -5
  167. package/src/sdk/api/types/InputDataRef.ts +0 -9
  168. package/src/sdk/api/types/InputParams.ts +0 -5
  169. package/src/sdk/api/types/ServiceExecutionStatus.ts +0 -14
  170. package/src/sdk/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.ts +0 -252
  171. package/src/sdk/core/fetcher/stream-wrappers/NodePre18StreamWrapper.ts +0 -106
  172. package/src/sdk/core/fetcher/stream-wrappers/UndiciStreamWrapper.ts +0 -239
  173. package/src/sdk/core/fetcher/stream-wrappers/chooseStreamWrapper.ts +0 -33
@@ -0,0 +1,4 @@
1
+ export type ResponseWithBody = Response & {
2
+ body: ReadableStream<Uint8Array>;
3
+ };
4
+ export declare function isResponseWithBody(response: Response): response is ResponseWithBody;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResponseWithBody = isResponseWithBody;
4
+ function isResponseWithBody(response) {
5
+ return response.body != null;
6
+ }
@@ -1 +1 @@
1
- export declare function createRequestUrl(baseUrl: string, queryParameters?: Record<string, string | string[] | object | object[]>): string;
1
+ export declare function createRequestUrl(baseUrl: string, queryParameters?: Record<string, unknown>): string;
@@ -1,12 +1,8 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.createRequestUrl = createRequestUrl;
7
- const qs_1 = __importDefault(require("qs"));
4
+ const qs_js_1 = require("../url/qs.js");
8
5
  function createRequestUrl(baseUrl, queryParameters) {
9
- return Object.keys(queryParameters ?? {}).length > 0
10
- ? `${baseUrl}?${qs_1.default.stringify(queryParameters, { arrayFormat: "repeat" })}`
11
- : baseUrl;
6
+ const queryString = (0, qs_js_1.toQueryString)(queryParameters, { arrayFormat: "repeat" });
7
+ return queryString ? `${baseUrl}?${queryString}` : baseUrl;
12
8
  }
@@ -0,0 +1 @@
1
+ export declare function getErrorResponseBody(response: Response): Promise<unknown>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getErrorResponseBody = getErrorResponseBody;
4
+ const json_js_1 = require("../json.js");
5
+ const getResponseBody_js_1 = require("./getResponseBody.js");
6
+ async function getErrorResponseBody(response) {
7
+ let contentType = response.headers.get("Content-Type")?.toLowerCase();
8
+ if (contentType == null || contentType.length === 0) {
9
+ return (0, getResponseBody_js_1.getResponseBody)(response);
10
+ }
11
+ if (contentType.indexOf(";") !== -1) {
12
+ contentType = contentType.split(";")[0]?.trim() ?? "";
13
+ }
14
+ switch (contentType) {
15
+ case "application/hal+json":
16
+ case "application/json":
17
+ case "application/ld+json":
18
+ case "application/problem+json":
19
+ case "application/vnd.api+json":
20
+ case "text/json":
21
+ const text = await response.text();
22
+ return text.length > 0 ? (0, json_js_1.fromJson)(text) : undefined;
23
+ default:
24
+ if (contentType.startsWith("application/vnd.") && contentType.endsWith("+json")) {
25
+ const text = await response.text();
26
+ return text.length > 0 ? (0, json_js_1.fromJson)(text) : undefined;
27
+ }
28
+ // Fallback to plain text if content type is not recognized
29
+ // Even if no body is present, the response will be an empty string
30
+ return await response.text();
31
+ }
32
+ }
@@ -1,4 +1 @@
1
- /**
2
- * Returns a fetch function based on the runtime
3
- */
4
- export declare function getFetchFn(): Promise<any>;
1
+ export declare function getFetchFn(): Promise<typeof fetch>;
@@ -1,57 +1,6 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.getFetchFn = getFetchFn;
37
- const runtime_1 = require("../runtime");
38
- /**
39
- * Returns a fetch function based on the runtime
40
- */
41
4
  async function getFetchFn() {
42
- // In Node.js 18+ environments, use native fetch
43
- if (runtime_1.RUNTIME.type === "node" && runtime_1.RUNTIME.parsedVersion != null && runtime_1.RUNTIME.parsedVersion >= 18) {
44
- return fetch;
45
- }
46
- // In Node.js 18 or lower environments, the SDK always uses`node-fetch`.
47
- if (runtime_1.RUNTIME.type === "node") {
48
- return (await Promise.resolve().then(() => __importStar(require("node-fetch")))).default;
49
- }
50
- // Otherwise the SDK uses global fetch if available,
51
- // and falls back to node-fetch.
52
- if (typeof fetch == "function") {
53
- return fetch;
54
- }
55
- // Defaults to node `node-fetch` if global fetch isn't available
56
- return (await Promise.resolve().then(() => __importStar(require("node-fetch")))).default;
5
+ return fetch;
57
6
  }
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getRequestBody = getRequestBody;
4
+ const json_js_1 = require("../json.js");
4
5
  async function getRequestBody({ body, type }) {
5
6
  if (type.includes("json")) {
6
- return JSON.stringify(body);
7
+ return (0, json_js_1.toJson)(body);
7
8
  }
8
9
  else {
9
10
  return body;
@@ -1,40 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getResponseBody = getResponseBody;
4
- const chooseStreamWrapper_1 = require("./stream-wrappers/chooseStreamWrapper");
4
+ const BinaryResponse_js_1 = require("./BinaryResponse.js");
5
+ const ResponseWithBody_js_1 = require("./ResponseWithBody.js");
6
+ const json_js_1 = require("../json.js");
5
7
  async function getResponseBody(response, responseType) {
6
- if (response.body != null && responseType === "blob") {
7
- return await response.blob();
8
+ if (!(0, ResponseWithBody_js_1.isResponseWithBody)(response)) {
9
+ return undefined;
8
10
  }
9
- else if (response.body != null && responseType === "sse") {
10
- return response.body;
11
+ switch (responseType) {
12
+ case "binary-response":
13
+ return (0, BinaryResponse_js_1.getBinaryResponse)(response);
14
+ case "blob":
15
+ return await response.blob();
16
+ case "arrayBuffer":
17
+ return await response.arrayBuffer();
18
+ case "sse":
19
+ return response.body;
20
+ case "streaming":
21
+ return response.body;
22
+ case "text":
23
+ return await response.text();
11
24
  }
12
- else if (response.body != null && responseType === "streaming") {
13
- return (0, chooseStreamWrapper_1.chooseStreamWrapper)(response.body);
14
- }
15
- else if (response.body != null && responseType === "text") {
16
- return await response.text();
17
- }
18
- else {
19
- const text = await response.text();
20
- if (text.length > 0) {
21
- try {
22
- let responseBody = JSON.parse(text);
23
- return responseBody;
24
- }
25
- catch (err) {
26
- return {
27
- ok: false,
28
- error: {
29
- reason: "non-json",
30
- statusCode: response.status,
31
- rawBody: text,
32
- },
33
- };
34
- }
25
+ // if responseType is "json" or not specified, try to parse as JSON
26
+ const text = await response.text();
27
+ if (text.length > 0) {
28
+ try {
29
+ let responseBody = (0, json_js_1.fromJson)(text);
30
+ return responseBody;
35
31
  }
36
- else {
37
- return undefined;
32
+ catch (err) {
33
+ return {
34
+ ok: false,
35
+ error: {
36
+ reason: "non-json",
37
+ statusCode: response.status,
38
+ rawBody: text,
39
+ },
40
+ };
38
41
  }
39
42
  }
43
+ return undefined;
40
44
  }
@@ -1,5 +1,9 @@
1
- export type { APIResponse } from "./APIResponse";
2
- export { fetcher } from "./Fetcher";
3
- export type { Fetcher, FetchFunction } from "./Fetcher";
4
- export { getHeader } from "./getHeader";
5
- export { Supplier } from "./Supplier";
1
+ export type { APIResponse } from "./APIResponse.js";
2
+ export { fetcher } from "./Fetcher.js";
3
+ export type { Fetcher, FetchFunction } from "./Fetcher.js";
4
+ export { getHeader } from "./getHeader.js";
5
+ export { Supplier } from "./Supplier.js";
6
+ export { abortRawResponse, toRawResponse, unknownRawResponse } from "./RawResponse.js";
7
+ export type { RawResponse, WithRawResponse } from "./RawResponse.js";
8
+ export { HttpResponsePromise } from "./HttpResponsePromise.js";
9
+ export { BinaryResponse } from "./BinaryResponse.js";
@@ -1,9 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Supplier = exports.getHeader = exports.fetcher = void 0;
4
- var Fetcher_1 = require("./Fetcher");
5
- Object.defineProperty(exports, "fetcher", { enumerable: true, get: function () { return Fetcher_1.fetcher; } });
6
- var getHeader_1 = require("./getHeader");
7
- Object.defineProperty(exports, "getHeader", { enumerable: true, get: function () { return getHeader_1.getHeader; } });
8
- var Supplier_1 = require("./Supplier");
9
- Object.defineProperty(exports, "Supplier", { enumerable: true, get: function () { return Supplier_1.Supplier; } });
3
+ exports.HttpResponsePromise = exports.unknownRawResponse = exports.toRawResponse = exports.abortRawResponse = exports.Supplier = exports.getHeader = exports.fetcher = void 0;
4
+ var Fetcher_js_1 = require("./Fetcher.js");
5
+ Object.defineProperty(exports, "fetcher", { enumerable: true, get: function () { return Fetcher_js_1.fetcher; } });
6
+ var getHeader_js_1 = require("./getHeader.js");
7
+ Object.defineProperty(exports, "getHeader", { enumerable: true, get: function () { return getHeader_js_1.getHeader; } });
8
+ var Supplier_js_1 = require("./Supplier.js");
9
+ Object.defineProperty(exports, "Supplier", { enumerable: true, get: function () { return Supplier_js_1.Supplier; } });
10
+ var RawResponse_js_1 = require("./RawResponse.js");
11
+ Object.defineProperty(exports, "abortRawResponse", { enumerable: true, get: function () { return RawResponse_js_1.abortRawResponse; } });
12
+ Object.defineProperty(exports, "toRawResponse", { enumerable: true, get: function () { return RawResponse_js_1.toRawResponse; } });
13
+ Object.defineProperty(exports, "unknownRawResponse", { enumerable: true, get: function () { return RawResponse_js_1.unknownRawResponse; } });
14
+ var HttpResponsePromise_js_1 = require("./HttpResponsePromise.js");
15
+ Object.defineProperty(exports, "HttpResponsePromise", { enumerable: true, get: function () { return HttpResponsePromise_js_1.HttpResponsePromise; } });
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeRequest = void 0;
4
- const signals_1 = require("./signals");
4
+ const signals_js_1 = require("./signals.js");
5
5
  const makeRequest = async (fetchFn, url, method, headers, requestBody, timeoutMs, abortSignal, withCredentials, duplex) => {
6
6
  const signals = [];
7
7
  // Add timeout signal
8
8
  let timeoutAbortId = undefined;
9
9
  if (timeoutMs != null) {
10
- const { signal, abortId } = (0, signals_1.getTimeoutSignal)(timeoutMs);
10
+ const { signal, abortId } = (0, signals_js_1.getTimeoutSignal)(timeoutMs);
11
11
  timeoutAbortId = abortId;
12
12
  signals.push(signal);
13
13
  }
@@ -15,7 +15,7 @@ const makeRequest = async (fetchFn, url, method, headers, requestBody, timeoutMs
15
15
  if (abortSignal != null) {
16
16
  signals.push(abortSignal);
17
17
  }
18
- let newSignals = (0, signals_1.anySignal)(signals);
18
+ let newSignals = (0, signals_js_1.anySignal)(signals);
19
19
  const response = await fetchFn(url, {
20
20
  method: method,
21
21
  headers,
@@ -1,15 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.requestWithRetries = requestWithRetries;
4
- const INITIAL_RETRY_DELAY = 1;
5
- const MAX_RETRY_DELAY = 60;
4
+ const INITIAL_RETRY_DELAY = 1000; // in milliseconds
5
+ const MAX_RETRY_DELAY = 60000; // in milliseconds
6
6
  const DEFAULT_MAX_RETRIES = 2;
7
+ const JITTER_FACTOR = 0.2; // 20% random jitter
8
+ function addJitter(delay) {
9
+ // Generate a random value between -JITTER_FACTOR and +JITTER_FACTOR
10
+ const jitterMultiplier = 1 + (Math.random() * 2 - 1) * JITTER_FACTOR;
11
+ return delay * jitterMultiplier;
12
+ }
7
13
  async function requestWithRetries(requestFn, maxRetries = DEFAULT_MAX_RETRIES) {
8
14
  let response = await requestFn();
9
15
  for (let i = 0; i < maxRetries; ++i) {
10
- if ([408, 409, 429].includes(response.status) || response.status >= 500) {
11
- const delay = Math.min(INITIAL_RETRY_DELAY * Math.pow(2, i), MAX_RETRY_DELAY);
12
- await new Promise((resolve) => setTimeout(resolve, delay));
16
+ if ([408, 429].includes(response.status) || response.status >= 500) {
17
+ // Calculate base delay using exponential backoff (in milliseconds)
18
+ const baseDelay = Math.min(INITIAL_RETRY_DELAY * Math.pow(2, i), MAX_RETRY_DELAY);
19
+ // Add jitter to the delay
20
+ const delayWithJitter = addJitter(baseDelay);
21
+ await new Promise((resolve) => setTimeout(resolve, delayWithJitter));
13
22
  response = await requestFn();
14
23
  }
15
24
  else {
@@ -0,0 +1,3 @@
1
+ import * as core from "./index.js";
2
+ export declare function mergeHeaders(...headersArray: (Record<string, string | core.Supplier<string | undefined> | undefined> | undefined)[]): Record<string, string | core.Supplier<string | undefined>>;
3
+ export declare function mergeOnlyDefinedHeaders(...headersArray: (Record<string, string | core.Supplier<string | undefined> | undefined> | undefined)[]): Record<string, string | core.Supplier<string | undefined>>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeHeaders = mergeHeaders;
4
+ exports.mergeOnlyDefinedHeaders = mergeOnlyDefinedHeaders;
5
+ function mergeHeaders(...headersArray) {
6
+ const result = {};
7
+ for (const [key, value] of headersArray
8
+ .filter((headers) => headers != null)
9
+ .flatMap((headers) => Object.entries(headers))) {
10
+ if (value != null) {
11
+ result[key] = value;
12
+ }
13
+ else if (key in result) {
14
+ delete result[key];
15
+ }
16
+ }
17
+ return result;
18
+ }
19
+ function mergeOnlyDefinedHeaders(...headersArray) {
20
+ const result = {};
21
+ for (const [key, value] of headersArray
22
+ .filter((headers) => headers != null)
23
+ .flatMap((headers) => Object.entries(headers))) {
24
+ if (value != null) {
25
+ result[key] = value;
26
+ }
27
+ }
28
+ return result;
29
+ }
@@ -1,3 +1,5 @@
1
- export * from "./fetcher";
2
- export * from "./auth";
3
- export * from "./runtime";
1
+ export * from "./fetcher/index.js";
2
+ export * from "./runtime/index.js";
3
+ export * as url from "./url/index.js";
4
+ export * from "./auth/index.js";
5
+ export * from "./base64.js";
@@ -10,10 +10,35 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
12
  }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
13
18
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
20
  };
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
16
38
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./fetcher"), exports);
18
- __exportStar(require("./auth"), exports);
19
- __exportStar(require("./runtime"), exports);
39
+ exports.url = void 0;
40
+ __exportStar(require("./fetcher/index.js"), exports);
41
+ __exportStar(require("./runtime/index.js"), exports);
42
+ exports.url = __importStar(require("./url/index.js"));
43
+ __exportStar(require("./auth/index.js"), exports);
44
+ __exportStar(require("./base64.js"), exports);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Serialize a value to JSON
3
+ * @param value A JavaScript value, usually an object or array, to be converted.
4
+ * @param replacer A function that transforms the results.
5
+ * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
6
+ * @returns JSON string
7
+ */
8
+ export declare const toJson: (value: unknown, replacer?: (this: unknown, key: string, value: unknown) => unknown, space?: string | number) => string;
9
+ /**
10
+ * Parse JSON string to object, array, or other type
11
+ * @param text A valid JSON string.
12
+ * @param reviver A function that transforms the results. This function is called for each member of the object. If a member contains nested objects, the nested objects are transformed before the parent object is.
13
+ * @returns Parsed object, array, or other type
14
+ */
15
+ export declare function fromJson<T = unknown>(text: string, reviver?: (this: unknown, key: string, value: unknown) => unknown): T;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toJson = void 0;
4
+ exports.fromJson = fromJson;
5
+ /**
6
+ * Serialize a value to JSON
7
+ * @param value A JavaScript value, usually an object or array, to be converted.
8
+ * @param replacer A function that transforms the results.
9
+ * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
10
+ * @returns JSON string
11
+ */
12
+ const toJson = (value, replacer, space) => {
13
+ return JSON.stringify(value, replacer, space);
14
+ };
15
+ exports.toJson = toJson;
16
+ /**
17
+ * Parse JSON string to object, array, or other type
18
+ * @param text A valid JSON string.
19
+ * @param reviver A function that transforms the results. This function is called for each member of the object. If a member contains nested objects, the nested objects are transformed before the parent object is.
20
+ * @returns Parsed object, array, or other type
21
+ */
22
+ function fromJson(text, reviver) {
23
+ return JSON.parse(text, reviver);
24
+ }
@@ -1 +1 @@
1
- export { RUNTIME } from "./runtime";
1
+ export { RUNTIME } from "./runtime.js";
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RUNTIME = void 0;
4
- var runtime_1 = require("./runtime");
5
- Object.defineProperty(exports, "RUNTIME", { enumerable: true, get: function () { return runtime_1.RUNTIME; } });
4
+ var runtime_js_1 = require("./runtime.js");
5
+ Object.defineProperty(exports, "RUNTIME", { enumerable: true, get: function () { return runtime_js_1.RUNTIME; } });
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export declare const RUNTIME: Runtime;
5
5
  export interface Runtime {
6
- type: "browser" | "web-worker" | "deno" | "bun" | "node" | "react-native" | "unknown" | "workerd";
6
+ type: "browser" | "web-worker" | "deno" | "bun" | "node" | "react-native" | "unknown" | "workerd" | "edge-runtime";
7
7
  version?: string;
8
8
  parsedVersion?: number;
9
9
  }
@@ -1,79 +1,83 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RUNTIME = void 0;
4
- /**
5
- * A constant that indicates whether the environment the code is running is a Web Browser.
6
- */
7
- const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined";
8
- /**
9
- * A constant that indicates whether the environment the code is running is a Web Worker.
10
- */
11
- const isWebWorker = typeof self === "object" &&
12
- // @ts-ignore
13
- typeof self?.importScripts === "function" &&
14
- (self.constructor?.name === "DedicatedWorkerGlobalScope" ||
15
- self.constructor?.name === "ServiceWorkerGlobalScope" ||
16
- self.constructor?.name === "SharedWorkerGlobalScope");
17
- /**
18
- * A constant that indicates whether the environment the code is running is Deno.
19
- */
20
- const isDeno = typeof Deno !== "undefined" && typeof Deno.version !== "undefined" && typeof Deno.version.deno !== "undefined";
21
- /**
22
- * A constant that indicates whether the environment the code is running is Bun.sh.
23
- */
24
- const isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undefined";
25
- /**
26
- * A constant that indicates whether the environment the code is running is Node.JS.
27
- */
28
- const isNode = typeof process !== "undefined" &&
29
- Boolean(process.version) &&
30
- Boolean(process.versions?.node) &&
31
- // Deno spoofs process.versions.node, see https://deno.land/std@0.177.0/node/process.ts?s=versions
32
- !isDeno &&
33
- !isBun;
34
- /**
35
- * A constant that indicates whether the environment the code is running is in React-Native.
36
- * https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js
37
- */
38
- const isReactNative = typeof navigator !== "undefined" && navigator?.product === "ReactNative";
39
- /**
40
- * A constant that indicates whether the environment the code is running is Cloudflare.
41
- * https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent
42
- */
43
- const isCloudflare = typeof globalThis !== "undefined" && globalThis?.navigator?.userAgent === "Cloudflare-Workers";
44
4
  /**
45
5
  * A constant that indicates which environment and version the SDK is running in.
46
6
  */
47
7
  exports.RUNTIME = evaluateRuntime();
48
8
  function evaluateRuntime() {
9
+ /**
10
+ * A constant that indicates whether the environment the code is running is a Web Browser.
11
+ */
12
+ const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined";
49
13
  if (isBrowser) {
50
14
  return {
51
15
  type: "browser",
52
16
  version: window.navigator.userAgent,
53
17
  };
54
18
  }
19
+ /**
20
+ * A constant that indicates whether the environment the code is running is Cloudflare.
21
+ * https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent
22
+ */
23
+ const isCloudflare = typeof globalThis !== "undefined" && globalThis?.navigator?.userAgent === "Cloudflare-Workers";
55
24
  if (isCloudflare) {
56
25
  return {
57
26
  type: "workerd",
58
27
  };
59
28
  }
29
+ /**
30
+ * A constant that indicates whether the environment the code is running is Edge Runtime.
31
+ * https://vercel.com/docs/functions/runtimes/edge-runtime#check-if-you're-running-on-the-edge-runtime
32
+ */
33
+ const isEdgeRuntime = typeof EdgeRuntime === "string";
34
+ if (isEdgeRuntime) {
35
+ return {
36
+ type: "edge-runtime",
37
+ };
38
+ }
39
+ /**
40
+ * A constant that indicates whether the environment the code is running is a Web Worker.
41
+ */
42
+ const isWebWorker = typeof self === "object" &&
43
+ typeof self?.importScripts === "function" &&
44
+ (self.constructor?.name === "DedicatedWorkerGlobalScope" ||
45
+ self.constructor?.name === "ServiceWorkerGlobalScope" ||
46
+ self.constructor?.name === "SharedWorkerGlobalScope");
60
47
  if (isWebWorker) {
61
48
  return {
62
49
  type: "web-worker",
63
50
  };
64
51
  }
52
+ /**
53
+ * A constant that indicates whether the environment the code is running is Deno.
54
+ * FYI Deno spoofs process.versions.node, see https://deno.land/std@0.177.0/node/process.ts?s=versions
55
+ */
56
+ const isDeno = typeof Deno !== "undefined" && typeof Deno.version !== "undefined" && typeof Deno.version.deno !== "undefined";
65
57
  if (isDeno) {
66
58
  return {
67
59
  type: "deno",
68
60
  version: Deno.version.deno,
69
61
  };
70
62
  }
63
+ /**
64
+ * A constant that indicates whether the environment the code is running is Bun.sh.
65
+ */
66
+ const isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undefined";
71
67
  if (isBun) {
72
68
  return {
73
69
  type: "bun",
74
70
  version: Bun.version,
75
71
  };
76
72
  }
73
+ /**
74
+ * A constant that indicates whether the environment the code is running is Node.JS.
75
+ */
76
+ const isNode = typeof process !== "undefined" &&
77
+ "version" in process &&
78
+ !!process.version &&
79
+ "versions" in process &&
80
+ !!process.versions?.node;
77
81
  if (isNode) {
78
82
  return {
79
83
  type: "node",
@@ -81,6 +85,11 @@ function evaluateRuntime() {
81
85
  parsedVersion: Number(process.versions.node.split(".")[0]),
82
86
  };
83
87
  }
88
+ /**
89
+ * A constant that indicates whether the environment the code is running is in React-Native.
90
+ * https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js
91
+ */
92
+ const isReactNative = typeof navigator !== "undefined" && navigator?.product === "ReactNative";
84
93
  if (isReactNative) {
85
94
  return {
86
95
  type: "react-native",
@@ -0,0 +1,2 @@
1
+ export { join } from "./join.js";
2
+ export { toQueryString } from "./qs.js";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toQueryString = exports.join = void 0;
4
+ var join_js_1 = require("./join.js");
5
+ Object.defineProperty(exports, "join", { enumerable: true, get: function () { return join_js_1.join; } });
6
+ var qs_js_1 = require("./qs.js");
7
+ Object.defineProperty(exports, "toQueryString", { enumerable: true, get: function () { return qs_js_1.toQueryString; } });
@@ -0,0 +1 @@
1
+ export declare function join(base: string, ...segments: string[]): string;