@nizam-os/customer-sdk 1.0.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 (187) hide show
  1. package/dist/BaseClient.d.ts +42 -0
  2. package/dist/BaseClient.js +80 -0
  3. package/dist/Client.d.ts +29 -0
  4. package/dist/Client.js +74 -0
  5. package/dist/api/errors/ConflictError.d.ts +6 -0
  6. package/dist/api/errors/ConflictError.js +54 -0
  7. package/dist/api/errors/ForbiddenError.d.ts +6 -0
  8. package/dist/api/errors/ForbiddenError.js +54 -0
  9. package/dist/api/errors/InternalServerError.d.ts +6 -0
  10. package/dist/api/errors/InternalServerError.js +54 -0
  11. package/dist/api/errors/UnauthorizedError.d.ts +6 -0
  12. package/dist/api/errors/UnauthorizedError.js +54 -0
  13. package/dist/api/errors/index.d.ts +4 -0
  14. package/dist/api/errors/index.js +20 -0
  15. package/dist/api/index.d.ts +3 -0
  16. package/dist/api/index.js +19 -0
  17. package/dist/api/resources/identity/client/Client.d.ts +39 -0
  18. package/dist/api/resources/identity/client/Client.js +116 -0
  19. package/dist/api/resources/identity/client/index.d.ts +1 -0
  20. package/dist/api/resources/identity/client/index.js +2 -0
  21. package/dist/api/resources/identity/exports.d.ts +2 -0
  22. package/dist/api/resources/identity/exports.js +21 -0
  23. package/dist/api/resources/identity/index.d.ts +1 -0
  24. package/dist/api/resources/identity/index.js +17 -0
  25. package/dist/api/resources/index.d.ts +2 -0
  26. package/dist/api/resources/index.js +38 -0
  27. package/dist/api/resources/lookups/client/Client.d.ts +27 -0
  28. package/dist/api/resources/lookups/client/Client.js +100 -0
  29. package/dist/api/resources/lookups/client/index.d.ts +1 -0
  30. package/dist/api/resources/lookups/client/index.js +2 -0
  31. package/dist/api/resources/lookups/exports.d.ts +2 -0
  32. package/dist/api/resources/lookups/exports.js +21 -0
  33. package/dist/api/resources/lookups/index.d.ts +1 -0
  34. package/dist/api/resources/lookups/index.js +17 -0
  35. package/dist/api/types/AcceptInviteRequest.d.ts +4 -0
  36. package/dist/api/types/AcceptInviteRequest.js +3 -0
  37. package/dist/api/types/ApiFieldError.d.ts +11 -0
  38. package/dist/api/types/ApiFieldError.js +3 -0
  39. package/dist/api/types/Asset.d.ts +58 -0
  40. package/dist/api/types/Asset.js +33 -0
  41. package/dist/api/types/Assignment.d.ts +49 -0
  42. package/dist/api/types/Assignment.js +30 -0
  43. package/dist/api/types/CloseAssignmentRequest.d.ts +21 -0
  44. package/dist/api/types/CloseAssignmentRequest.js +18 -0
  45. package/dist/api/types/CreateAssetRequest.d.ts +26 -0
  46. package/dist/api/types/CreateAssetRequest.js +19 -0
  47. package/dist/api/types/CreateAutonomousOperatorRequest.d.ts +15 -0
  48. package/dist/api/types/CreateAutonomousOperatorRequest.js +3 -0
  49. package/dist/api/types/CreateHumanOperatorRequest.d.ts +17 -0
  50. package/dist/api/types/CreateHumanOperatorRequest.js +3 -0
  51. package/dist/api/types/CreateInviteRequest.d.ts +23 -0
  52. package/dist/api/types/CreateInviteRequest.js +17 -0
  53. package/dist/api/types/CreateOperatorRequest.d.ts +16 -0
  54. package/dist/api/types/CreateOperatorRequest.js +3 -0
  55. package/dist/api/types/CreateOrganizationRequest.d.ts +16 -0
  56. package/dist/api/types/CreateOrganizationRequest.js +3 -0
  57. package/dist/api/types/CreateTeleoperatedOperatorRequest.d.ts +11 -0
  58. package/dist/api/types/CreateTeleoperatedOperatorRequest.js +3 -0
  59. package/dist/api/types/InternalUserUpdateRequest.d.ts +21 -0
  60. package/dist/api/types/InternalUserUpdateRequest.js +14 -0
  61. package/dist/api/types/Invite.d.ts +47 -0
  62. package/dist/api/types/Invite.js +28 -0
  63. package/dist/api/types/InviteUserRequest.d.ts +9 -0
  64. package/dist/api/types/InviteUserRequest.js +3 -0
  65. package/dist/api/types/ListResponse.d.ts +23 -0
  66. package/dist/api/types/ListResponse.js +11 -0
  67. package/dist/api/types/OpenAssignmentRequest.d.ts +22 -0
  68. package/dist/api/types/OpenAssignmentRequest.js +15 -0
  69. package/dist/api/types/Operator.d.ts +45 -0
  70. package/dist/api/types/Operator.js +26 -0
  71. package/dist/api/types/Organization.d.ts +35 -0
  72. package/dist/api/types/Organization.js +17 -0
  73. package/dist/api/types/OrganizationMembership.d.ts +29 -0
  74. package/dist/api/types/OrganizationMembership.js +21 -0
  75. package/dist/api/types/ProblemDetail.d.ts +21 -0
  76. package/dist/api/types/ProblemDetail.js +3 -0
  77. package/dist/api/types/UpdateOrganizationRequest.d.ts +14 -0
  78. package/dist/api/types/UpdateOrganizationRequest.js +3 -0
  79. package/dist/api/types/User.d.ts +40 -0
  80. package/dist/api/types/User.js +21 -0
  81. package/dist/api/types/UserResource.d.ts +34 -0
  82. package/dist/api/types/UserResource.js +18 -0
  83. package/dist/api/types/UserUpdateRequest.d.ts +9 -0
  84. package/dist/api/types/UserUpdateRequest.js +3 -0
  85. package/dist/api/types/index.d.ts +25 -0
  86. package/dist/api/types/index.js +41 -0
  87. package/dist/auth/BearerAuthProvider.d.ts +20 -0
  88. package/dist/auth/BearerAuthProvider.js +68 -0
  89. package/dist/auth/index.d.ts +1 -0
  90. package/dist/auth/index.js +5 -0
  91. package/dist/core/auth/AuthProvider.d.ts +8 -0
  92. package/dist/core/auth/AuthProvider.js +9 -0
  93. package/dist/core/auth/AuthRequest.d.ts +9 -0
  94. package/dist/core/auth/AuthRequest.js +2 -0
  95. package/dist/core/auth/BasicAuth.d.ts +8 -0
  96. package/dist/core/auth/BasicAuth.js +32 -0
  97. package/dist/core/auth/BearerToken.d.ts +7 -0
  98. package/dist/core/auth/BearerToken.js +16 -0
  99. package/dist/core/auth/NoOpAuthProvider.d.ts +5 -0
  100. package/dist/core/auth/NoOpAuthProvider.js +9 -0
  101. package/dist/core/auth/index.d.ts +5 -0
  102. package/dist/core/auth/index.js +11 -0
  103. package/dist/core/base64.d.ts +2 -0
  104. package/dist/core/base64.js +26 -0
  105. package/dist/core/exports.d.ts +1 -0
  106. package/dist/core/exports.js +17 -0
  107. package/dist/core/fetcher/APIResponse.d.ts +20 -0
  108. package/dist/core/fetcher/APIResponse.js +2 -0
  109. package/dist/core/fetcher/BinaryResponse.d.ts +19 -0
  110. package/dist/core/fetcher/BinaryResponse.js +17 -0
  111. package/dist/core/fetcher/EndpointMetadata.d.ts +13 -0
  112. package/dist/core/fetcher/EndpointMetadata.js +2 -0
  113. package/dist/core/fetcher/EndpointSupplier.d.ts +12 -0
  114. package/dist/core/fetcher/EndpointSupplier.js +13 -0
  115. package/dist/core/fetcher/Fetcher.d.ts +56 -0
  116. package/dist/core/fetcher/Fetcher.js +310 -0
  117. package/dist/core/fetcher/Headers.d.ts +2 -0
  118. package/dist/core/fetcher/Headers.js +84 -0
  119. package/dist/core/fetcher/HttpResponsePromise.d.ts +58 -0
  120. package/dist/core/fetcher/HttpResponsePromise.js +92 -0
  121. package/dist/core/fetcher/RawResponse.d.ts +29 -0
  122. package/dist/core/fetcher/RawResponse.js +44 -0
  123. package/dist/core/fetcher/Supplier.d.ts +4 -0
  124. package/dist/core/fetcher/Supplier.js +13 -0
  125. package/dist/core/fetcher/createRequestUrl.d.ts +1 -0
  126. package/dist/core/fetcher/createRequestUrl.js +8 -0
  127. package/dist/core/fetcher/getErrorResponseBody.d.ts +1 -0
  128. package/dist/core/fetcher/getErrorResponseBody.js +33 -0
  129. package/dist/core/fetcher/getFetchFn.d.ts +1 -0
  130. package/dist/core/fetcher/getFetchFn.js +6 -0
  131. package/dist/core/fetcher/getHeader.d.ts +1 -0
  132. package/dist/core/fetcher/getHeader.js +11 -0
  133. package/dist/core/fetcher/getRequestBody.d.ts +7 -0
  134. package/dist/core/fetcher/getRequestBody.js +16 -0
  135. package/dist/core/fetcher/getResponseBody.d.ts +1 -0
  136. package/dist/core/fetcher/getResponseBody.js +58 -0
  137. package/dist/core/fetcher/index.d.ts +13 -0
  138. package/dist/core/fetcher/index.js +19 -0
  139. package/dist/core/fetcher/makePassthroughRequest.d.ts +49 -0
  140. package/dist/core/fetcher/makePassthroughRequest.js +122 -0
  141. package/dist/core/fetcher/makeRequest.d.ts +6 -0
  142. package/dist/core/fetcher/makeRequest.js +59 -0
  143. package/dist/core/fetcher/requestWithRetries.d.ts +1 -0
  144. package/dist/core/fetcher/requestWithRetries.js +59 -0
  145. package/dist/core/fetcher/signals.d.ts +5 -0
  146. package/dist/core/fetcher/signals.js +24 -0
  147. package/dist/core/headers.d.ts +2 -0
  148. package/dist/core/headers.js +31 -0
  149. package/dist/core/index.d.ts +6 -0
  150. package/dist/core/index.js +45 -0
  151. package/dist/core/json.d.ts +15 -0
  152. package/dist/core/json.js +24 -0
  153. package/dist/core/logging/exports.d.ts +18 -0
  154. package/dist/core/logging/exports.js +45 -0
  155. package/dist/core/logging/index.d.ts +1 -0
  156. package/dist/core/logging/index.js +17 -0
  157. package/dist/core/logging/logger.d.ts +126 -0
  158. package/dist/core/logging/logger.js +143 -0
  159. package/dist/core/runtime/index.d.ts +1 -0
  160. package/dist/core/runtime/index.js +5 -0
  161. package/dist/core/runtime/runtime.d.ts +9 -0
  162. package/dist/core/runtime/runtime.js +103 -0
  163. package/dist/core/url/QueryStringBuilder.d.ts +47 -0
  164. package/dist/core/url/QueryStringBuilder.js +83 -0
  165. package/dist/core/url/encodePathParam.d.ts +1 -0
  166. package/dist/core/url/encodePathParam.js +21 -0
  167. package/dist/core/url/index.d.ts +4 -0
  168. package/dist/core/url/index.js +11 -0
  169. package/dist/core/url/join.d.ts +1 -0
  170. package/dist/core/url/join.js +68 -0
  171. package/dist/core/url/qs.d.ts +7 -0
  172. package/dist/core/url/qs.js +79 -0
  173. package/dist/environments.d.ts +4 -0
  174. package/dist/environments.js +7 -0
  175. package/dist/errors/NizamCustomerError.d.ts +14 -0
  176. package/dist/errors/NizamCustomerError.js +35 -0
  177. package/dist/errors/NizamCustomerTimeoutError.d.ts +6 -0
  178. package/dist/errors/NizamCustomerTimeoutError.js +18 -0
  179. package/dist/errors/handleNonStatusCodeError.d.ts +2 -0
  180. package/dist/errors/handleNonStatusCodeError.js +68 -0
  181. package/dist/errors/index.d.ts +2 -0
  182. package/dist/errors/index.js +7 -0
  183. package/dist/exports.d.ts +1 -0
  184. package/dist/exports.js +17 -0
  185. package/dist/index.d.ts +6 -0
  186. package/dist/index.js +48 -0
  187. package/package.json +35 -0
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Supplier = void 0;
4
+ exports.Supplier = {
5
+ get: async (supplier) => {
6
+ if (typeof supplier === "function") {
7
+ return supplier();
8
+ }
9
+ else {
10
+ return supplier;
11
+ }
12
+ },
13
+ };
@@ -0,0 +1 @@
1
+ export declare function createRequestUrl(baseUrl: string, queryParameters?: Record<string, unknown>): string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRequestUrl = createRequestUrl;
4
+ const qs_js_1 = require("../url/qs.js");
5
+ function createRequestUrl(baseUrl, queryParameters) {
6
+ const queryString = (0, qs_js_1.toQueryString)(queryParameters, { arrayFormat: "repeat" });
7
+ return queryString ? `${baseUrl}?${queryString}` : baseUrl;
8
+ }
@@ -0,0 +1 @@
1
+ export declare function getErrorResponseBody(response: Response): Promise<unknown>;
@@ -0,0 +1,33 @@
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
+ }
24
+ default:
25
+ if (contentType.startsWith("application/vnd.") && contentType.endsWith("+json")) {
26
+ const text = await response.text();
27
+ return text.length > 0 ? (0, json_js_1.fromJson)(text) : undefined;
28
+ }
29
+ // Fallback to plain text if content type is not recognized
30
+ // Even if no body is present, the response will be an empty string
31
+ return await response.text();
32
+ }
33
+ }
@@ -0,0 +1 @@
1
+ export declare function getFetchFn(): Promise<typeof fetch>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFetchFn = getFetchFn;
4
+ async function getFetchFn() {
5
+ return fetch;
6
+ }
@@ -0,0 +1 @@
1
+ export declare function getHeader(headers: Record<string, any>, header: string): string | undefined;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getHeader = getHeader;
4
+ function getHeader(headers, header) {
5
+ for (const [headerKey, headerValue] of Object.entries(headers)) {
6
+ if (headerKey.toLowerCase() === header.toLowerCase()) {
7
+ return headerValue;
8
+ }
9
+ }
10
+ return undefined;
11
+ }
@@ -0,0 +1,7 @@
1
+ export declare namespace GetRequestBody {
2
+ interface Args {
3
+ body: unknown;
4
+ type: "json" | "file" | "bytes" | "form" | "other";
5
+ }
6
+ }
7
+ export declare function getRequestBody({ body, type }: GetRequestBody.Args): Promise<BodyInit | undefined>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRequestBody = getRequestBody;
4
+ const json_js_1 = require("../json.js");
5
+ const qs_js_1 = require("../url/qs.js");
6
+ async function getRequestBody({ body, type }) {
7
+ if (type === "form") {
8
+ return (0, qs_js_1.toQueryString)(body, { arrayFormat: "repeat", encode: true });
9
+ }
10
+ if (type.includes("json")) {
11
+ return (0, json_js_1.toJson)(body);
12
+ }
13
+ else {
14
+ return body;
15
+ }
16
+ }
@@ -0,0 +1 @@
1
+ export declare function getResponseBody(response: Response, responseType?: string): Promise<unknown>;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getResponseBody = getResponseBody;
4
+ const json_js_1 = require("../json.js");
5
+ const BinaryResponse_js_1 = require("./BinaryResponse.js");
6
+ async function getResponseBody(response, responseType) {
7
+ switch (responseType) {
8
+ case "binary-response":
9
+ return (0, BinaryResponse_js_1.getBinaryResponse)(response);
10
+ case "blob":
11
+ return await response.blob();
12
+ case "arrayBuffer":
13
+ return await response.arrayBuffer();
14
+ case "sse":
15
+ if (response.body == null) {
16
+ return {
17
+ ok: false,
18
+ error: {
19
+ reason: "body-is-null",
20
+ statusCode: response.status,
21
+ },
22
+ };
23
+ }
24
+ return response.body;
25
+ case "streaming":
26
+ if (response.body == null) {
27
+ return {
28
+ ok: false,
29
+ error: {
30
+ reason: "body-is-null",
31
+ statusCode: response.status,
32
+ },
33
+ };
34
+ }
35
+ return response.body;
36
+ case "text":
37
+ return await response.text();
38
+ }
39
+ // if responseType is "json" or not specified, try to parse as JSON
40
+ const text = await response.text();
41
+ if (text.length > 0) {
42
+ try {
43
+ const responseBody = (0, json_js_1.fromJson)(text);
44
+ return responseBody;
45
+ }
46
+ catch (_err) {
47
+ return {
48
+ ok: false,
49
+ error: {
50
+ reason: "non-json",
51
+ statusCode: response.status,
52
+ rawBody: text,
53
+ },
54
+ };
55
+ }
56
+ }
57
+ return undefined;
58
+ }
@@ -0,0 +1,13 @@
1
+ export type { APIResponse } from "./APIResponse.js";
2
+ export type { BinaryResponse } from "./BinaryResponse.js";
3
+ export type { EndpointMetadata } from "./EndpointMetadata.js";
4
+ export { EndpointSupplier } from "./EndpointSupplier.js";
5
+ export type { Fetcher, FetchFunction } from "./Fetcher.js";
6
+ export { fetcher } from "./Fetcher.js";
7
+ export { getHeader } from "./getHeader.js";
8
+ export { HttpResponsePromise } from "./HttpResponsePromise.js";
9
+ export type { PassthroughRequest } from "./makePassthroughRequest.js";
10
+ export { makePassthroughRequest } from "./makePassthroughRequest.js";
11
+ export type { RawResponse, WithRawResponse } from "./RawResponse.js";
12
+ export { abortRawResponse, toRawResponse, unknownRawResponse } from "./RawResponse.js";
13
+ export { Supplier } from "./Supplier.js";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Supplier = exports.unknownRawResponse = exports.toRawResponse = exports.abortRawResponse = exports.makePassthroughRequest = exports.HttpResponsePromise = exports.getHeader = exports.fetcher = exports.EndpointSupplier = void 0;
4
+ var EndpointSupplier_js_1 = require("./EndpointSupplier.js");
5
+ Object.defineProperty(exports, "EndpointSupplier", { enumerable: true, get: function () { return EndpointSupplier_js_1.EndpointSupplier; } });
6
+ var Fetcher_js_1 = require("./Fetcher.js");
7
+ Object.defineProperty(exports, "fetcher", { enumerable: true, get: function () { return Fetcher_js_1.fetcher; } });
8
+ var getHeader_js_1 = require("./getHeader.js");
9
+ Object.defineProperty(exports, "getHeader", { enumerable: true, get: function () { return getHeader_js_1.getHeader; } });
10
+ var HttpResponsePromise_js_1 = require("./HttpResponsePromise.js");
11
+ Object.defineProperty(exports, "HttpResponsePromise", { enumerable: true, get: function () { return HttpResponsePromise_js_1.HttpResponsePromise; } });
12
+ var makePassthroughRequest_js_1 = require("./makePassthroughRequest.js");
13
+ Object.defineProperty(exports, "makePassthroughRequest", { enumerable: true, get: function () { return makePassthroughRequest_js_1.makePassthroughRequest; } });
14
+ var RawResponse_js_1 = require("./RawResponse.js");
15
+ Object.defineProperty(exports, "abortRawResponse", { enumerable: true, get: function () { return RawResponse_js_1.abortRawResponse; } });
16
+ Object.defineProperty(exports, "toRawResponse", { enumerable: true, get: function () { return RawResponse_js_1.toRawResponse; } });
17
+ Object.defineProperty(exports, "unknownRawResponse", { enumerable: true, get: function () { return RawResponse_js_1.unknownRawResponse; } });
18
+ var Supplier_js_1 = require("./Supplier.js");
19
+ Object.defineProperty(exports, "Supplier", { enumerable: true, get: function () { return Supplier_js_1.Supplier; } });
@@ -0,0 +1,49 @@
1
+ import { type LogConfig, type Logger } from "../logging/logger.js";
2
+ import { Supplier } from "./Supplier.js";
3
+ export declare namespace PassthroughRequest {
4
+ /**
5
+ * Per-request options that can override the SDK client defaults.
6
+ */
7
+ interface RequestOptions {
8
+ /** Override the default timeout for this request (in seconds). */
9
+ timeoutInSeconds?: number;
10
+ /** Override the default number of retries for this request. */
11
+ maxRetries?: number;
12
+ /** Additional headers to include in this request. */
13
+ headers?: Record<string, string>;
14
+ /** Abort signal for this request. */
15
+ abortSignal?: AbortSignal;
16
+ }
17
+ /**
18
+ * SDK client configuration used by the passthrough fetch method.
19
+ */
20
+ interface ClientOptions {
21
+ /** The base URL or environment for the client. */
22
+ environment?: Supplier<string>;
23
+ /** Override the base URL. */
24
+ baseUrl?: Supplier<string>;
25
+ /** Default headers to include in requests. */
26
+ headers?: Record<string, unknown>;
27
+ /** Default maximum time to wait for a response in seconds. */
28
+ timeoutInSeconds?: number;
29
+ /** Default number of times to retry the request. Defaults to 2. */
30
+ maxRetries?: number;
31
+ /** A custom fetch function. */
32
+ fetch?: typeof fetch;
33
+ /** Logging configuration. */
34
+ logging?: LogConfig | Logger;
35
+ /** A function that returns auth headers. */
36
+ getAuthHeaders?: () => Promise<Record<string, string>>;
37
+ }
38
+ }
39
+ /**
40
+ * Makes a passthrough HTTP request using the SDK's configuration (auth, retry, logging, etc.)
41
+ * while mimicking the standard `fetch` API.
42
+ *
43
+ * @param input - The URL, path, or Request object. If a relative path, it will be resolved against the configured base URL.
44
+ * @param init - Standard RequestInit options (method, headers, body, signal, etc.)
45
+ * @param clientOptions - SDK client options (auth, default headers, logging, etc.)
46
+ * @param requestOptions - Per-request overrides (timeout, retries, extra headers, abort signal).
47
+ * @returns A standard Response object.
48
+ */
49
+ export declare function makePassthroughRequest(input: Request | string | URL, init: RequestInit | undefined, clientOptions: PassthroughRequest.ClientOptions, requestOptions?: PassthroughRequest.RequestOptions): Promise<Response>;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makePassthroughRequest = makePassthroughRequest;
4
+ const logger_js_1 = require("../logging/logger.js");
5
+ const join_js_1 = require("../url/join.js");
6
+ const EndpointSupplier_js_1 = require("./EndpointSupplier.js");
7
+ const getFetchFn_js_1 = require("./getFetchFn.js");
8
+ const makeRequest_js_1 = require("./makeRequest.js");
9
+ const requestWithRetries_js_1 = require("./requestWithRetries.js");
10
+ const Supplier_js_1 = require("./Supplier.js");
11
+ /**
12
+ * Makes a passthrough HTTP request using the SDK's configuration (auth, retry, logging, etc.)
13
+ * while mimicking the standard `fetch` API.
14
+ *
15
+ * @param input - The URL, path, or Request object. If a relative path, it will be resolved against the configured base URL.
16
+ * @param init - Standard RequestInit options (method, headers, body, signal, etc.)
17
+ * @param clientOptions - SDK client options (auth, default headers, logging, etc.)
18
+ * @param requestOptions - Per-request overrides (timeout, retries, extra headers, abort signal).
19
+ * @returns A standard Response object.
20
+ */
21
+ async function makePassthroughRequest(input, init, clientOptions, requestOptions) {
22
+ const logger = (0, logger_js_1.createLogger)(clientOptions.logging);
23
+ // Extract URL and default init properties from Request object if provided
24
+ let url;
25
+ let effectiveInit = init;
26
+ if (input instanceof Request) {
27
+ url = input.url;
28
+ // If no explicit init provided, extract properties from the Request object
29
+ if (init == null) {
30
+ effectiveInit = {
31
+ method: input.method,
32
+ headers: Object.fromEntries(input.headers.entries()),
33
+ body: input.body,
34
+ signal: input.signal,
35
+ credentials: input.credentials,
36
+ cache: input.cache,
37
+ redirect: input.redirect,
38
+ referrer: input.referrer,
39
+ integrity: input.integrity,
40
+ mode: input.mode,
41
+ };
42
+ }
43
+ }
44
+ else {
45
+ url = input instanceof URL ? input.toString() : input;
46
+ }
47
+ // Resolve the base URL
48
+ const baseUrl = (clientOptions.baseUrl != null ? await Supplier_js_1.Supplier.get(clientOptions.baseUrl) : undefined) ??
49
+ (clientOptions.environment != null ? await Supplier_js_1.Supplier.get(clientOptions.environment) : undefined);
50
+ // Determine the full URL
51
+ let fullUrl;
52
+ if (url.startsWith("http://") || url.startsWith("https://")) {
53
+ fullUrl = url;
54
+ }
55
+ else if (baseUrl != null) {
56
+ fullUrl = (0, join_js_1.join)(baseUrl, url);
57
+ }
58
+ else {
59
+ fullUrl = url;
60
+ }
61
+ // Merge headers: SDK default headers -> auth headers -> user-provided headers
62
+ const mergedHeaders = {};
63
+ // Apply SDK default headers (resolve suppliers)
64
+ if (clientOptions.headers != null) {
65
+ for (const [key, value] of Object.entries(clientOptions.headers)) {
66
+ const resolved = await EndpointSupplier_js_1.EndpointSupplier.get(value, { endpointMetadata: {} });
67
+ if (resolved != null) {
68
+ mergedHeaders[key.toLowerCase()] = `${resolved}`;
69
+ }
70
+ }
71
+ }
72
+ // Apply auth headers
73
+ if (clientOptions.getAuthHeaders != null) {
74
+ const authHeaders = await clientOptions.getAuthHeaders();
75
+ for (const [key, value] of Object.entries(authHeaders)) {
76
+ mergedHeaders[key.toLowerCase()] = value;
77
+ }
78
+ }
79
+ // Apply user-provided headers from init
80
+ if (effectiveInit?.headers != null) {
81
+ const initHeaders = effectiveInit.headers instanceof Headers
82
+ ? Object.fromEntries(effectiveInit.headers.entries())
83
+ : Array.isArray(effectiveInit.headers)
84
+ ? Object.fromEntries(effectiveInit.headers)
85
+ : effectiveInit.headers;
86
+ for (const [key, value] of Object.entries(initHeaders)) {
87
+ if (value != null) {
88
+ mergedHeaders[key.toLowerCase()] = value;
89
+ }
90
+ }
91
+ }
92
+ // Apply per-request option headers (highest priority)
93
+ if (requestOptions?.headers != null) {
94
+ for (const [key, value] of Object.entries(requestOptions.headers)) {
95
+ mergedHeaders[key.toLowerCase()] = value;
96
+ }
97
+ }
98
+ const method = effectiveInit?.method ?? "GET";
99
+ const body = effectiveInit?.body;
100
+ const timeoutInSeconds = requestOptions?.timeoutInSeconds ?? clientOptions.timeoutInSeconds;
101
+ const timeoutMs = timeoutInSeconds != null ? timeoutInSeconds * 1000 : undefined;
102
+ const maxRetries = requestOptions?.maxRetries ?? clientOptions.maxRetries;
103
+ const abortSignal = requestOptions?.abortSignal ?? effectiveInit?.signal ?? undefined;
104
+ const fetchFn = clientOptions.fetch ?? (await (0, getFetchFn_js_1.getFetchFn)());
105
+ if (logger.isDebug()) {
106
+ logger.debug("Making passthrough HTTP request", {
107
+ method,
108
+ url: fullUrl,
109
+ hasBody: body != null,
110
+ });
111
+ }
112
+ const response = await (0, requestWithRetries_js_1.requestWithRetries)(async () => (0, makeRequest_js_1.makeRequest)(fetchFn, fullUrl, method, mergedHeaders, body ?? undefined, timeoutMs, abortSignal, effectiveInit?.credentials === "include", undefined, // duplex
113
+ false), maxRetries);
114
+ if (logger.isDebug()) {
115
+ logger.debug("Passthrough HTTP request completed", {
116
+ method,
117
+ url: fullUrl,
118
+ statusCode: response.status,
119
+ });
120
+ }
121
+ return response;
122
+ }
@@ -0,0 +1,6 @@
1
+ export declare function isCacheNoStoreSupported(): boolean;
2
+ /**
3
+ * Reset the cached result of `isCacheNoStoreSupported`. Exposed for testing only.
4
+ */
5
+ export declare function resetCacheNoStoreSupported(): void;
6
+ export declare const makeRequest: (fetchFn: (url: string, init: RequestInit) => Promise<Response>, url: string, method: string, headers: Headers | Record<string, string>, requestBody: BodyInit | undefined, timeoutMs?: number, abortSignal?: AbortSignal, withCredentials?: boolean, duplex?: "half", disableCache?: boolean) => Promise<Response>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeRequest = void 0;
4
+ exports.isCacheNoStoreSupported = isCacheNoStoreSupported;
5
+ exports.resetCacheNoStoreSupported = resetCacheNoStoreSupported;
6
+ const signals_js_1 = require("./signals.js");
7
+ /**
8
+ * Cached result of checking whether the current runtime supports
9
+ * the `cache` option in `Request`. Some runtimes (e.g. Cloudflare Workers)
10
+ * throw a TypeError when this option is used.
11
+ */
12
+ let _cacheNoStoreSupported;
13
+ function isCacheNoStoreSupported() {
14
+ if (_cacheNoStoreSupported != null) {
15
+ return _cacheNoStoreSupported;
16
+ }
17
+ try {
18
+ new Request("http://localhost", { cache: "no-store" });
19
+ _cacheNoStoreSupported = true;
20
+ }
21
+ catch {
22
+ _cacheNoStoreSupported = false;
23
+ }
24
+ return _cacheNoStoreSupported;
25
+ }
26
+ /**
27
+ * Reset the cached result of `isCacheNoStoreSupported`. Exposed for testing only.
28
+ */
29
+ function resetCacheNoStoreSupported() {
30
+ _cacheNoStoreSupported = undefined;
31
+ }
32
+ const makeRequest = async (fetchFn, url, method, headers, requestBody, timeoutMs, abortSignal, withCredentials, duplex, disableCache) => {
33
+ const signals = [];
34
+ let timeoutAbortId;
35
+ if (timeoutMs != null) {
36
+ const { signal, abortId } = (0, signals_js_1.getTimeoutSignal)(timeoutMs);
37
+ timeoutAbortId = abortId;
38
+ signals.push(signal);
39
+ }
40
+ if (abortSignal != null) {
41
+ signals.push(abortSignal);
42
+ }
43
+ const newSignals = (0, signals_js_1.anySignal)(signals);
44
+ const response = await fetchFn(url, {
45
+ method: method,
46
+ headers,
47
+ body: requestBody,
48
+ signal: newSignals,
49
+ credentials: withCredentials ? "include" : undefined,
50
+ // @ts-ignore
51
+ duplex,
52
+ ...(disableCache && isCacheNoStoreSupported() ? { cache: "no-store" } : {}),
53
+ });
54
+ if (timeoutAbortId != null) {
55
+ clearTimeout(timeoutAbortId);
56
+ }
57
+ return response;
58
+ };
59
+ exports.makeRequest = makeRequest;
@@ -0,0 +1 @@
1
+ export declare function requestWithRetries(requestFn: () => Promise<Response>, maxRetries?: number): Promise<Response>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requestWithRetries = requestWithRetries;
4
+ const INITIAL_RETRY_DELAY = 1000; // in milliseconds
5
+ const MAX_RETRY_DELAY = 60000; // in milliseconds
6
+ const DEFAULT_MAX_RETRIES = 2;
7
+ const JITTER_FACTOR = 0.2; // 20% random jitter
8
+ function isRetryableStatusCode(statusCode) {
9
+ return [408, 429].includes(statusCode) || statusCode >= 500;
10
+ }
11
+ function addPositiveJitter(delay) {
12
+ const jitterMultiplier = 1 + Math.random() * JITTER_FACTOR;
13
+ return delay * jitterMultiplier;
14
+ }
15
+ function addSymmetricJitter(delay) {
16
+ const jitterMultiplier = 1 + (Math.random() - 0.5) * JITTER_FACTOR;
17
+ return delay * jitterMultiplier;
18
+ }
19
+ function getRetryDelayFromHeaders(response, retryAttempt) {
20
+ const retryAfter = response.headers.get("Retry-After");
21
+ if (retryAfter) {
22
+ const retryAfterSeconds = parseInt(retryAfter, 10);
23
+ if (!Number.isNaN(retryAfterSeconds) && retryAfterSeconds > 0) {
24
+ return Math.min(retryAfterSeconds * 1000, MAX_RETRY_DELAY);
25
+ }
26
+ const retryAfterDate = new Date(retryAfter);
27
+ if (!Number.isNaN(retryAfterDate.getTime())) {
28
+ const delay = retryAfterDate.getTime() - Date.now();
29
+ if (delay > 0) {
30
+ return Math.min(Math.max(delay, 0), MAX_RETRY_DELAY);
31
+ }
32
+ }
33
+ }
34
+ const rateLimitReset = response.headers.get("X-RateLimit-Reset");
35
+ if (rateLimitReset) {
36
+ const resetTime = parseInt(rateLimitReset, 10);
37
+ if (!Number.isNaN(resetTime)) {
38
+ const delay = resetTime * 1000 - Date.now();
39
+ if (delay > 0) {
40
+ return addPositiveJitter(Math.min(delay, MAX_RETRY_DELAY));
41
+ }
42
+ }
43
+ }
44
+ return addSymmetricJitter(Math.min(INITIAL_RETRY_DELAY * 2 ** retryAttempt, MAX_RETRY_DELAY));
45
+ }
46
+ async function requestWithRetries(requestFn, maxRetries = DEFAULT_MAX_RETRIES) {
47
+ let response = await requestFn();
48
+ for (let i = 0; i < maxRetries; ++i) {
49
+ if (isRetryableStatusCode(response.status)) {
50
+ const delay = getRetryDelayFromHeaders(response, i);
51
+ await new Promise((resolve) => setTimeout(resolve, delay));
52
+ response = await requestFn();
53
+ }
54
+ else {
55
+ break;
56
+ }
57
+ }
58
+ return response;
59
+ }
@@ -0,0 +1,5 @@
1
+ export declare function getTimeoutSignal(timeoutMs: number): {
2
+ signal: AbortSignal;
3
+ abortId: ReturnType<typeof setTimeout>;
4
+ };
5
+ export declare function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTimeoutSignal = getTimeoutSignal;
4
+ exports.anySignal = anySignal;
5
+ const TIMEOUT = "timeout";
6
+ function getTimeoutSignal(timeoutMs) {
7
+ const controller = new AbortController();
8
+ const abortId = setTimeout(() => controller.abort(TIMEOUT), timeoutMs);
9
+ return { signal: controller.signal, abortId };
10
+ }
11
+ function anySignal(...args) {
12
+ const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args);
13
+ const controller = new AbortController();
14
+ for (const signal of signals) {
15
+ if (signal.aborted) {
16
+ controller.abort(signal?.reason);
17
+ break;
18
+ }
19
+ signal.addEventListener("abort", () => controller.abort(signal?.reason), {
20
+ signal: controller.signal,
21
+ });
22
+ }
23
+ return controller.signal;
24
+ }
@@ -0,0 +1,2 @@
1
+ export declare function mergeHeaders(...headersArray: (Record<string, unknown> | null | undefined)[]): Record<string, unknown>;
2
+ export declare function mergeOnlyDefinedHeaders(...headersArray: (Record<string, unknown> | null | undefined)[]): Record<string, unknown>;
@@ -0,0 +1,31 @@
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
+ const insensitiveKey = key.toLowerCase();
11
+ if (value != null) {
12
+ result[insensitiveKey] = value;
13
+ }
14
+ else if (insensitiveKey in result) {
15
+ delete result[insensitiveKey];
16
+ }
17
+ }
18
+ return result;
19
+ }
20
+ function mergeOnlyDefinedHeaders(...headersArray) {
21
+ const result = {};
22
+ for (const [key, value] of headersArray
23
+ .filter((headers) => headers != null)
24
+ .flatMap((headers) => Object.entries(headers))) {
25
+ const insensitiveKey = key.toLowerCase();
26
+ if (value != null) {
27
+ result[insensitiveKey] = value;
28
+ }
29
+ }
30
+ return result;
31
+ }
@@ -0,0 +1,6 @@
1
+ export * from "./auth/index.js";
2
+ export * from "./base64.js";
3
+ export * from "./fetcher/index.js";
4
+ export * as logging from "./logging/index.js";
5
+ export * from "./runtime/index.js";
6
+ export * as url from "./url/index.js";
@@ -0,0 +1,45 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
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
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.url = exports.logging = void 0;
40
+ __exportStar(require("./auth/index.js"), exports);
41
+ __exportStar(require("./base64.js"), exports);
42
+ __exportStar(require("./fetcher/index.js"), exports);
43
+ exports.logging = __importStar(require("./logging/index.js"));
44
+ __exportStar(require("./runtime/index.js"), exports);
45
+ exports.url = __importStar(require("./url/index.js"));
@@ -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;