@orq-ai/node 3.2.8 → 3.3.0-rc.1

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 (215) hide show
  1. package/bin/mcp-server.js +32 -35
  2. package/bin/mcp-server.js.map +20 -20
  3. package/jsr.json +1 -1
  4. package/lib/config.d.ts +2 -2
  5. package/lib/config.js +2 -2
  6. package/lib/config.js.map +1 -1
  7. package/mcp-server/mcp-server.js +1 -1
  8. package/mcp-server/mcp-server.js.map +1 -1
  9. package/mcp-server/server.js +1 -1
  10. package/mcp-server/server.js.map +1 -1
  11. package/models/operations/bulkcreatedatapoints.js +2 -2
  12. package/models/operations/createcontact.js +2 -2
  13. package/models/operations/createdataset.js +2 -2
  14. package/models/operations/createdatasetitem.js +2 -2
  15. package/models/operations/fileget.js +2 -2
  16. package/models/operations/filelist.js +2 -2
  17. package/models/operations/fileupload.js +2 -2
  18. package/models/operations/listdatasetdatapoints.js +2 -2
  19. package/models/operations/listdatasets.js +2 -2
  20. package/models/operations/retrievedatapoint.js +2 -2
  21. package/models/operations/retrievedataset.js +2 -2
  22. package/models/operations/updatedatapoint.js +2 -2
  23. package/models/operations/updatedataset.js +2 -2
  24. package/package.json +3 -2
  25. package/src/lib/config.ts +2 -2
  26. package/src/mcp-server/mcp-server.ts +1 -1
  27. package/src/mcp-server/server.ts +1 -1
  28. package/src/models/operations/bulkcreatedatapoints.ts +2 -2
  29. package/src/models/operations/createcontact.ts +2 -2
  30. package/src/models/operations/createdataset.ts +2 -2
  31. package/src/models/operations/createdatasetitem.ts +2 -2
  32. package/src/models/operations/fileget.ts +2 -2
  33. package/src/models/operations/filelist.ts +2 -2
  34. package/src/models/operations/fileupload.ts +2 -2
  35. package/src/models/operations/listdatasetdatapoints.ts +2 -2
  36. package/src/models/operations/listdatasets.ts +2 -2
  37. package/src/models/operations/retrievedatapoint.ts +2 -2
  38. package/src/models/operations/retrievedataset.ts +2 -2
  39. package/src/models/operations/updatedatapoint.ts +2 -2
  40. package/src/models/operations/updatedataset.ts +2 -2
  41. package/packages/orq-rc/FUNCTIONS.md +0 -106
  42. package/packages/orq-rc/README.md +0 -660
  43. package/packages/orq-rc/RUNTIMES.md +0 -48
  44. package/packages/orq-rc/docs/sdks/contacts/README.md +0 -84
  45. package/packages/orq-rc/docs/sdks/datasets/README.md +0 -934
  46. package/packages/orq-rc/docs/sdks/deployments/README.md +0 -316
  47. package/packages/orq-rc/docs/sdks/feedback/README.md +0 -92
  48. package/packages/orq-rc/docs/sdks/files/README.md +0 -305
  49. package/packages/orq-rc/docs/sdks/metrics/README.md +0 -86
  50. package/packages/orq-rc/docs/sdks/orq/README.md +0 -10
  51. package/packages/orq-rc/docs/sdks/prompts/README.md +0 -608
  52. package/packages/orq-rc/docs/sdks/remoteconfigs/README.md +0 -80
  53. package/packages/orq-rc/jsr.json +0 -28
  54. package/packages/orq-rc/package-lock.json +0 -3217
  55. package/packages/orq-rc/package.json +0 -45
  56. package/packages/orq-rc/src/core.ts +0 -13
  57. package/packages/orq-rc/src/funcs/contactsCreate.ts +0 -154
  58. package/packages/orq-rc/src/funcs/datasetsClear.ts +0 -161
  59. package/packages/orq-rc/src/funcs/datasetsCreate.ts +0 -159
  60. package/packages/orq-rc/src/funcs/datasetsCreateDatapoint.ts +0 -161
  61. package/packages/orq-rc/src/funcs/datasetsCreateDatapoints.ts +0 -165
  62. package/packages/orq-rc/src/funcs/datasetsDelete.ts +0 -161
  63. package/packages/orq-rc/src/funcs/datasetsDeleteDatapoint.ts +0 -176
  64. package/packages/orq-rc/src/funcs/datasetsList.ts +0 -162
  65. package/packages/orq-rc/src/funcs/datasetsListDatapoints.ts +0 -169
  66. package/packages/orq-rc/src/funcs/datasetsRetrieve.ts +0 -169
  67. package/packages/orq-rc/src/funcs/datasetsRetrieveDatapoint.ts +0 -175
  68. package/packages/orq-rc/src/funcs/datasetsUpdate.ts +0 -170
  69. package/packages/orq-rc/src/funcs/datasetsUpdateDatapoint.ts +0 -173
  70. package/packages/orq-rc/src/funcs/deploymentsGetConfig.ts +0 -162
  71. package/packages/orq-rc/src/funcs/deploymentsInvoke.ts +0 -170
  72. package/packages/orq-rc/src/funcs/deploymentsList.ts +0 -171
  73. package/packages/orq-rc/src/funcs/deploymentsMetricsCreate.ts +0 -162
  74. package/packages/orq-rc/src/funcs/deploymentsStream.ts +0 -178
  75. package/packages/orq-rc/src/funcs/feedbackCreate.ts +0 -154
  76. package/packages/orq-rc/src/funcs/filesCreate.ts +0 -177
  77. package/packages/orq-rc/src/funcs/filesDelete.ts +0 -158
  78. package/packages/orq-rc/src/funcs/filesGet.ts +0 -160
  79. package/packages/orq-rc/src/funcs/filesList.ts +0 -162
  80. package/packages/orq-rc/src/funcs/promptsCreate.ts +0 -154
  81. package/packages/orq-rc/src/funcs/promptsDelete.ts +0 -158
  82. package/packages/orq-rc/src/funcs/promptsGetVersion.ts +0 -175
  83. package/packages/orq-rc/src/funcs/promptsList.ts +0 -162
  84. package/packages/orq-rc/src/funcs/promptsListVersions.ts +0 -168
  85. package/packages/orq-rc/src/funcs/promptsRetrieve.ts +0 -160
  86. package/packages/orq-rc/src/funcs/promptsUpdate.ts +0 -167
  87. package/packages/orq-rc/src/funcs/remoteconfigsRetrieve.ts +0 -155
  88. package/packages/orq-rc/src/hooks/global.ts +0 -44
  89. package/packages/orq-rc/src/hooks/hooks.ts +0 -132
  90. package/packages/orq-rc/src/hooks/index.ts +0 -6
  91. package/packages/orq-rc/src/hooks/registration.ts +0 -15
  92. package/packages/orq-rc/src/hooks/types.ts +0 -110
  93. package/packages/orq-rc/src/index.ts +0 -7
  94. package/packages/orq-rc/src/lib/base64.ts +0 -37
  95. package/packages/orq-rc/src/lib/config.ts +0 -70
  96. package/packages/orq-rc/src/lib/dlv.ts +0 -53
  97. package/packages/orq-rc/src/lib/encodings.ts +0 -483
  98. package/packages/orq-rc/src/lib/env.ts +0 -73
  99. package/packages/orq-rc/src/lib/event-streams.ts +0 -264
  100. package/packages/orq-rc/src/lib/files.ts +0 -40
  101. package/packages/orq-rc/src/lib/http.ts +0 -323
  102. package/packages/orq-rc/src/lib/is-plain-object.ts +0 -43
  103. package/packages/orq-rc/src/lib/logger.ts +0 -9
  104. package/packages/orq-rc/src/lib/matchers.ts +0 -325
  105. package/packages/orq-rc/src/lib/primitives.ts +0 -150
  106. package/packages/orq-rc/src/lib/retries.ts +0 -218
  107. package/packages/orq-rc/src/lib/schemas.ts +0 -91
  108. package/packages/orq-rc/src/lib/sdks.ts +0 -395
  109. package/packages/orq-rc/src/lib/security.ts +0 -261
  110. package/packages/orq-rc/src/lib/url.ts +0 -33
  111. package/packages/orq-rc/src/mcp-server/cli/start/command.ts +0 -125
  112. package/packages/orq-rc/src/mcp-server/cli/start/impl.ts +0 -140
  113. package/packages/orq-rc/src/mcp-server/cli.ts +0 -13
  114. package/packages/orq-rc/src/mcp-server/console-logger.ts +0 -71
  115. package/packages/orq-rc/src/mcp-server/extensions.ts +0 -17
  116. package/packages/orq-rc/src/mcp-server/mcp-server.ts +0 -26
  117. package/packages/orq-rc/src/mcp-server/prompts.ts +0 -110
  118. package/packages/orq-rc/src/mcp-server/resources.ts +0 -158
  119. package/packages/orq-rc/src/mcp-server/scopes.ts +0 -7
  120. package/packages/orq-rc/src/mcp-server/server.ts +0 -125
  121. package/packages/orq-rc/src/mcp-server/shared.ts +0 -75
  122. package/packages/orq-rc/src/mcp-server/tools/contactsCreate.ts +0 -37
  123. package/packages/orq-rc/src/mcp-server/tools/datasetsClear.ts +0 -35
  124. package/packages/orq-rc/src/mcp-server/tools/datasetsCreate.ts +0 -37
  125. package/packages/orq-rc/src/mcp-server/tools/datasetsCreateDatapoint.ts +0 -37
  126. package/packages/orq-rc/src/mcp-server/tools/datasetsCreateDatapoints.ts +0 -37
  127. package/packages/orq-rc/src/mcp-server/tools/datasetsDelete.ts +0 -35
  128. package/packages/orq-rc/src/mcp-server/tools/datasetsDeleteDatapoint.ts +0 -35
  129. package/packages/orq-rc/src/mcp-server/tools/datasetsList.ts +0 -37
  130. package/packages/orq-rc/src/mcp-server/tools/datasetsListDatapoints.ts +0 -37
  131. package/packages/orq-rc/src/mcp-server/tools/datasetsRetrieve.ts +0 -37
  132. package/packages/orq-rc/src/mcp-server/tools/datasetsRetrieveDatapoint.ts +0 -37
  133. package/packages/orq-rc/src/mcp-server/tools/datasetsUpdate.ts +0 -37
  134. package/packages/orq-rc/src/mcp-server/tools/datasetsUpdateDatapoint.ts +0 -35
  135. package/packages/orq-rc/src/mcp-server/tools/deploymentsGetConfig.ts +0 -37
  136. package/packages/orq-rc/src/mcp-server/tools/deploymentsInvoke.ts +0 -37
  137. package/packages/orq-rc/src/mcp-server/tools/deploymentsList.ts +0 -37
  138. package/packages/orq-rc/src/mcp-server/tools/deploymentsMetricsCreate.ts +0 -37
  139. package/packages/orq-rc/src/mcp-server/tools/deploymentsStream.ts +0 -37
  140. package/packages/orq-rc/src/mcp-server/tools/feedbackCreate.ts +0 -37
  141. package/packages/orq-rc/src/mcp-server/tools/filesCreate.ts +0 -37
  142. package/packages/orq-rc/src/mcp-server/tools/filesDelete.ts +0 -33
  143. package/packages/orq-rc/src/mcp-server/tools/filesGet.ts +0 -37
  144. package/packages/orq-rc/src/mcp-server/tools/filesList.ts +0 -37
  145. package/packages/orq-rc/src/mcp-server/tools/promptsCreate.ts +0 -35
  146. package/packages/orq-rc/src/mcp-server/tools/promptsDelete.ts +0 -33
  147. package/packages/orq-rc/src/mcp-server/tools/promptsGetVersion.ts +0 -37
  148. package/packages/orq-rc/src/mcp-server/tools/promptsList.ts +0 -37
  149. package/packages/orq-rc/src/mcp-server/tools/promptsListVersions.ts +0 -37
  150. package/packages/orq-rc/src/mcp-server/tools/promptsRetrieve.ts +0 -37
  151. package/packages/orq-rc/src/mcp-server/tools/promptsUpdate.ts +0 -35
  152. package/packages/orq-rc/src/mcp-server/tools/remoteconfigsRetrieve.ts +0 -36
  153. package/packages/orq-rc/src/mcp-server/tools.ts +0 -126
  154. package/packages/orq-rc/src/models/components/deployments.ts +0 -4164
  155. package/packages/orq-rc/src/models/components/index.ts +0 -6
  156. package/packages/orq-rc/src/models/components/security.ts +0 -71
  157. package/packages/orq-rc/src/models/errors/apierror.ts +0 -27
  158. package/packages/orq-rc/src/models/errors/getpromptversion.ts +0 -71
  159. package/packages/orq-rc/src/models/errors/honoapierror.ts +0 -82
  160. package/packages/orq-rc/src/models/errors/httpclienterrors.ts +0 -62
  161. package/packages/orq-rc/src/models/errors/index.ts +0 -10
  162. package/packages/orq-rc/src/models/errors/sdkvalidationerror.ts +0 -97
  163. package/packages/orq-rc/src/models/errors/updateprompt.ts +0 -71
  164. package/packages/orq-rc/src/models/operations/bulkcreatedatapoints.ts +0 -1816
  165. package/packages/orq-rc/src/models/operations/cleardataset.ts +0 -75
  166. package/packages/orq-rc/src/models/operations/createcontact.ts +0 -256
  167. package/packages/orq-rc/src/models/operations/createdataset.ts +0 -296
  168. package/packages/orq-rc/src/models/operations/createdatasetitem.ts +0 -1740
  169. package/packages/orq-rc/src/models/operations/createfeedback.ts +0 -286
  170. package/packages/orq-rc/src/models/operations/createprompt.ts +0 -3735
  171. package/packages/orq-rc/src/models/operations/deletedatapoint.ts +0 -81
  172. package/packages/orq-rc/src/models/operations/deletedataset.ts +0 -75
  173. package/packages/orq-rc/src/models/operations/deleteprompt.ts +0 -69
  174. package/packages/orq-rc/src/models/operations/deploymentcreatemetric.ts +0 -4936
  175. package/packages/orq-rc/src/models/operations/deploymentgetconfig.ts +0 -6090
  176. package/packages/orq-rc/src/models/operations/deploymentinvoke.ts +0 -1199
  177. package/packages/orq-rc/src/models/operations/deployments.ts +0 -2194
  178. package/packages/orq-rc/src/models/operations/deploymentstream.ts +0 -5960
  179. package/packages/orq-rc/src/models/operations/filedelete.ts +0 -78
  180. package/packages/orq-rc/src/models/operations/fileget.ts +0 -223
  181. package/packages/orq-rc/src/models/operations/filelist.ts +0 -377
  182. package/packages/orq-rc/src/models/operations/fileupload.ts +0 -324
  183. package/packages/orq-rc/src/models/operations/getallprompts.ts +0 -2165
  184. package/packages/orq-rc/src/models/operations/getoneprompt.ts +0 -1989
  185. package/packages/orq-rc/src/models/operations/getpromptversion.ts +0 -1987
  186. package/packages/orq-rc/src/models/operations/index.ts +0 -35
  187. package/packages/orq-rc/src/models/operations/listdatasetdatapoints.ts +0 -1115
  188. package/packages/orq-rc/src/models/operations/listdatasets.ts +0 -448
  189. package/packages/orq-rc/src/models/operations/listpromptversions.ts +0 -2163
  190. package/packages/orq-rc/src/models/operations/remoteconfigsgetconfig.ts +0 -190
  191. package/packages/orq-rc/src/models/operations/retrievedatapoint.ts +0 -924
  192. package/packages/orq-rc/src/models/operations/retrievedataset.ts +0 -288
  193. package/packages/orq-rc/src/models/operations/updatedatapoint.ts +0 -1729
  194. package/packages/orq-rc/src/models/operations/updatedataset.ts +0 -374
  195. package/packages/orq-rc/src/models/operations/updateprompt.ts +0 -3914
  196. package/packages/orq-rc/src/sdk/contacts.ts +0 -27
  197. package/packages/orq-rc/src/sdk/datasets.ts +0 -222
  198. package/packages/orq-rc/src/sdk/deployments.ts +0 -89
  199. package/packages/orq-rc/src/sdk/feedback.ts +0 -27
  200. package/packages/orq-rc/src/sdk/files.ts +0 -78
  201. package/packages/orq-rc/src/sdk/index.ts +0 -5
  202. package/packages/orq-rc/src/sdk/metrics.ts +0 -27
  203. package/packages/orq-rc/src/sdk/prompts.ts +0 -126
  204. package/packages/orq-rc/src/sdk/remoteconfigs.ts +0 -24
  205. package/packages/orq-rc/src/sdk/sdk.ts +0 -49
  206. package/packages/orq-rc/src/types/async.ts +0 -68
  207. package/packages/orq-rc/src/types/blobs.ts +0 -31
  208. package/packages/orq-rc/src/types/constdatetime.ts +0 -15
  209. package/packages/orq-rc/src/types/enums.ts +0 -16
  210. package/packages/orq-rc/src/types/fp.ts +0 -50
  211. package/packages/orq-rc/src/types/index.ts +0 -11
  212. package/packages/orq-rc/src/types/operations.ts +0 -105
  213. package/packages/orq-rc/src/types/rfcdate.ts +0 -54
  214. package/packages/orq-rc/src/types/streams.ts +0 -21
  215. package/packages/orq-rc/tsconfig.json +0 -41
@@ -1,91 +0,0 @@
1
- /*
2
- * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
- */
4
-
5
- import {
6
- output,
7
- ZodEffects,
8
- ZodError,
9
- ZodObject,
10
- ZodRawShape,
11
- ZodTypeAny,
12
- } from "zod";
13
- import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
14
- import { ERR, OK, Result } from "../types/fp.js";
15
-
16
- /**
17
- * Utility function that executes some code which may throw a ZodError. It
18
- * intercepts this error and converts it to an SDKValidationError so as to not
19
- * leak Zod implementation details to user code.
20
- */
21
- export function parse<Inp, Out>(
22
- rawValue: Inp,
23
- fn: (value: Inp) => Out,
24
- errorMessage: string,
25
- ): Out {
26
- try {
27
- return fn(rawValue);
28
- } catch (err) {
29
- if (err instanceof ZodError) {
30
- throw new SDKValidationError(errorMessage, err, rawValue);
31
- }
32
- throw err;
33
- }
34
- }
35
-
36
- /**
37
- * Utility function that executes some code which may result in a ZodError. It
38
- * intercepts this error and converts it to an SDKValidationError so as to not
39
- * leak Zod implementation details to user code.
40
- */
41
- export function safeParse<Inp, Out>(
42
- rawValue: Inp,
43
- fn: (value: Inp) => Out,
44
- errorMessage: string,
45
- ): Result<Out, SDKValidationError> {
46
- try {
47
- return OK(fn(rawValue));
48
- } catch (err) {
49
- return ERR(new SDKValidationError(errorMessage, err, rawValue));
50
- }
51
- }
52
-
53
- export function collectExtraKeys<
54
- Shape extends ZodRawShape,
55
- Catchall extends ZodTypeAny,
56
- K extends string,
57
- >(
58
- obj: ZodObject<Shape, "strip", Catchall>,
59
- extrasKey: K,
60
- optional: boolean,
61
- ): ZodEffects<
62
- typeof obj,
63
- & output<ZodObject<Shape, "strict">>
64
- & {
65
- [k in K]: Record<string, output<Catchall>>;
66
- }
67
- > {
68
- return obj.transform((val) => {
69
- const extras: Record<string, output<Catchall>> = {};
70
- const { shape } = obj;
71
- for (const [key] of Object.entries(val)) {
72
- if (key in shape) {
73
- continue;
74
- }
75
-
76
- const v = val[key];
77
- if (typeof v === "undefined") {
78
- continue;
79
- }
80
-
81
- extras[key] = v;
82
- delete val[key];
83
- }
84
-
85
- if (optional && Object.keys(extras).length === 0) {
86
- return val;
87
- }
88
-
89
- return { ...val, [extrasKey]: extras };
90
- });
91
- }
@@ -1,395 +0,0 @@
1
- /*
2
- * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
- */
4
-
5
- import { SDKHooks } from "../hooks/hooks.js";
6
- import { HookContext } from "../hooks/types.js";
7
- import {
8
- ConnectionError,
9
- InvalidRequestError,
10
- RequestAbortedError,
11
- RequestTimeoutError,
12
- UnexpectedClientError,
13
- } from "../models/errors/httpclienterrors.js";
14
- import { ERR, OK, Result } from "../types/fp.js";
15
- import { stringToBase64 } from "./base64.js";
16
- import { SDK_METADATA, SDKOptions, serverURLFromOptions } from "./config.js";
17
- import { encodeForm } from "./encodings.js";
18
- import { env, fillGlobals } from "./env.js";
19
- import {
20
- HTTPClient,
21
- isAbortError,
22
- isConnectionError,
23
- isTimeoutError,
24
- matchContentType,
25
- matchStatusCode,
26
- } from "./http.js";
27
- import { Logger } from "./logger.js";
28
- import { retry, RetryConfig } from "./retries.js";
29
- import { SecurityState } from "./security.js";
30
-
31
- export type RequestOptions = {
32
- /**
33
- * Sets a timeout, in milliseconds, on HTTP requests made by an SDK method. If
34
- * `fetchOptions.signal` is set then it will take precedence over this option.
35
- */
36
- timeoutMs?: number;
37
- /**
38
- * Set or override a retry policy on HTTP calls.
39
- */
40
- retries?: RetryConfig;
41
- /**
42
- * Specifies the status codes which should be retried using the given retry policy.
43
- */
44
- retryCodes?: string[];
45
- /**
46
- * Overrides the base server URL that will be used by an operation.
47
- */
48
- serverURL?: string | URL;
49
- /**
50
- * Sets various request options on the `fetch` call made by an SDK method.
51
- *
52
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options|Request}
53
- */
54
- fetchOptions?: Omit<RequestInit, "method" | "body">;
55
- };
56
-
57
- type RequestConfig = {
58
- method: string;
59
- path: string;
60
- baseURL?: string | URL | undefined;
61
- query?: string;
62
- body?: RequestInit["body"];
63
- headers?: HeadersInit;
64
- security?: SecurityState | null;
65
- uaHeader?: string;
66
- timeoutMs?: number;
67
- };
68
-
69
- const gt: unknown = typeof globalThis === "undefined" ? null : globalThis;
70
- const webWorkerLike = typeof gt === "object"
71
- && gt != null
72
- && "importScripts" in gt
73
- && typeof gt["importScripts"] === "function";
74
- const isBrowserLike = webWorkerLike
75
- || (typeof navigator !== "undefined" && "serviceWorker" in navigator)
76
- || (typeof window === "object" && typeof window.document !== "undefined");
77
-
78
- export class ClientSDK {
79
- readonly #httpClient: HTTPClient;
80
- readonly #hooks: SDKHooks;
81
- readonly #logger?: Logger | undefined;
82
- public readonly _baseURL: URL | null;
83
- public readonly _options: SDKOptions & { hooks?: SDKHooks };
84
-
85
- constructor(options: SDKOptions = {}) {
86
- const opt = options as unknown;
87
- if (
88
- typeof opt === "object"
89
- && opt != null
90
- && "hooks" in opt
91
- && opt.hooks instanceof SDKHooks
92
- ) {
93
- this.#hooks = opt.hooks;
94
- } else {
95
- this.#hooks = new SDKHooks();
96
- }
97
- this._options = { ...fillGlobals(options), hooks: this.#hooks };
98
-
99
- const url = serverURLFromOptions(options);
100
- if (url) {
101
- url.pathname = url.pathname.replace(/\/+$/, "") + "/";
102
- }
103
- const { baseURL, client } = this.#hooks.sdkInit({
104
- baseURL: url,
105
- client: options.httpClient || new HTTPClient(),
106
- });
107
- this._baseURL = baseURL;
108
- this.#httpClient = client;
109
- this.#logger = options.debugLogger;
110
- if (!this.#logger && env().ORQ_DEBUG) {
111
- this.#logger = console;
112
- }
113
- }
114
-
115
- public _createRequest(
116
- context: HookContext,
117
- conf: RequestConfig,
118
- options?: RequestOptions,
119
- ): Result<Request, InvalidRequestError | UnexpectedClientError> {
120
- const { method, path, query, headers: opHeaders, security } = conf;
121
-
122
- const base = conf.baseURL ?? this._baseURL;
123
- if (!base) {
124
- return ERR(new InvalidRequestError("No base URL provided for operation"));
125
- }
126
- const reqURL = new URL(base);
127
- const inputURL = new URL(path, reqURL);
128
-
129
- if (path) {
130
- reqURL.pathname += reqURL.pathname.endsWith("/") ? "" : "/";
131
- reqURL.pathname += inputURL.pathname.replace(/^\/+/, "");
132
- }
133
-
134
- let finalQuery = query || "";
135
-
136
- const secQuery: string[] = [];
137
- for (const [k, v] of Object.entries(security?.queryParams || {})) {
138
- const q = encodeForm(k, v, { charEncoding: "percent" });
139
- if (typeof q !== "undefined") {
140
- secQuery.push(q);
141
- }
142
- }
143
- if (secQuery.length) {
144
- finalQuery += `&${secQuery.join("&")}`;
145
- }
146
-
147
- if (finalQuery) {
148
- const q = finalQuery.startsWith("&") ? finalQuery.slice(1) : finalQuery;
149
- reqURL.search = `?${q}`;
150
- }
151
-
152
- const headers = new Headers(opHeaders);
153
-
154
- const username = security?.basic.username;
155
- const password = security?.basic.password;
156
- if (username != null || password != null) {
157
- const encoded = stringToBase64(
158
- [username || "", password || ""].join(":"),
159
- );
160
- headers.set("Authorization", `Basic ${encoded}`);
161
- }
162
-
163
- const securityHeaders = new Headers(security?.headers || {});
164
- for (const [k, v] of securityHeaders) {
165
- headers.set(k, v);
166
- }
167
-
168
- let cookie = headers.get("cookie") || "";
169
- for (const [k, v] of Object.entries(security?.cookies || {})) {
170
- cookie += `; ${k}=${v}`;
171
- }
172
- cookie = cookie.startsWith("; ") ? cookie.slice(2) : cookie;
173
- headers.set("cookie", cookie);
174
-
175
- const userHeaders = new Headers(options?.fetchOptions?.headers);
176
- for (const [k, v] of userHeaders) {
177
- headers.set(k, v);
178
- }
179
-
180
- // Only set user agent header in non-browser-like environments since CORS
181
- // policy disallows setting it in browsers e.g. Chrome throws an error.
182
- if (!isBrowserLike) {
183
- headers.set(conf.uaHeader ?? "user-agent", SDK_METADATA.userAgent);
184
- }
185
-
186
- let fetchOptions = options?.fetchOptions;
187
- if (!fetchOptions?.signal && conf.timeoutMs && conf.timeoutMs > 0) {
188
- const timeoutSignal = AbortSignal.timeout(conf.timeoutMs);
189
- if (!fetchOptions) {
190
- fetchOptions = { signal: timeoutSignal };
191
- } else {
192
- fetchOptions.signal = timeoutSignal;
193
- }
194
- }
195
-
196
- if (conf.body instanceof ReadableStream) {
197
- if (!fetchOptions) {
198
- fetchOptions = {};
199
- }
200
- Object.assign(fetchOptions, { duplex: "half" });
201
- }
202
-
203
- let input;
204
- try {
205
- input = this.#hooks.beforeCreateRequest(context, {
206
- url: reqURL,
207
- options: {
208
- ...fetchOptions,
209
- body: conf.body ?? null,
210
- headers,
211
- method,
212
- },
213
- });
214
- } catch (err: unknown) {
215
- return ERR(
216
- new UnexpectedClientError("Create request hook failed to execute", {
217
- cause: err,
218
- }),
219
- );
220
- }
221
-
222
- return OK(new Request(input.url, input.options));
223
- }
224
-
225
- public async _do(
226
- request: Request,
227
- options: {
228
- context: HookContext;
229
- errorCodes: number | string | (number | string)[];
230
- retryConfig: RetryConfig;
231
- retryCodes: string[];
232
- },
233
- ): Promise<
234
- Result<
235
- Response,
236
- | RequestAbortedError
237
- | RequestTimeoutError
238
- | ConnectionError
239
- | UnexpectedClientError
240
- >
241
- > {
242
- const { context, errorCodes } = options;
243
-
244
- return retry(
245
- async () => {
246
- const req = await this.#hooks.beforeRequest(context, request.clone());
247
- await logRequest(this.#logger, req).catch((e) =>
248
- this.#logger?.log("Failed to log request:", e)
249
- );
250
-
251
- let response = await this.#httpClient.request(req);
252
-
253
- try {
254
- if (matchStatusCode(response, errorCodes)) {
255
- const result = await this.#hooks.afterError(
256
- context,
257
- response,
258
- null,
259
- );
260
- if (result.error) {
261
- throw result.error;
262
- }
263
- response = result.response || response;
264
- } else {
265
- response = await this.#hooks.afterSuccess(context, response);
266
- }
267
- } finally {
268
- await logResponse(this.#logger, response, req)
269
- .catch(e => this.#logger?.log("Failed to log response:", e));
270
- }
271
-
272
- return response;
273
- },
274
- { config: options.retryConfig, statusCodes: options.retryCodes },
275
- ).then(
276
- (r) => OK(r),
277
- (err) => {
278
- switch (true) {
279
- case isAbortError(err):
280
- return ERR(
281
- new RequestAbortedError("Request aborted by client", {
282
- cause: err,
283
- }),
284
- );
285
- case isTimeoutError(err):
286
- return ERR(
287
- new RequestTimeoutError("Request timed out", { cause: err }),
288
- );
289
- case isConnectionError(err):
290
- return ERR(
291
- new ConnectionError("Unable to make request", { cause: err }),
292
- );
293
- default:
294
- return ERR(
295
- new UnexpectedClientError("Unexpected HTTP client error", {
296
- cause: err,
297
- }),
298
- );
299
- }
300
- },
301
- );
302
- }
303
- }
304
-
305
- const jsonLikeContentTypeRE = /^application\/(?:.{0,100}\+)?json/;
306
- async function logRequest(logger: Logger | undefined, req: Request) {
307
- if (!logger) {
308
- return;
309
- }
310
-
311
- const contentType = req.headers.get("content-type");
312
- const ct = contentType?.split(";")[0] || "";
313
-
314
- logger.group(`> Request: ${req.method} ${req.url}`);
315
-
316
- logger.group("Headers:");
317
- for (const [k, v] of req.headers.entries()) {
318
- logger.log(`${k}: ${v}`);
319
- }
320
- logger.groupEnd();
321
-
322
- logger.group("Body:");
323
- switch (true) {
324
- case jsonLikeContentTypeRE.test(ct):
325
- logger.log(await req.clone().json());
326
- break;
327
- case ct.startsWith("text/"):
328
- logger.log(await req.clone().text());
329
- break;
330
- case ct === "multipart/form-data": {
331
- const body = await req.clone().formData();
332
- for (const [k, v] of body) {
333
- const vlabel = v instanceof Blob ? "<Blob>" : v;
334
- logger.log(`${k}: ${vlabel}`);
335
- }
336
- break;
337
- }
338
- default:
339
- logger.log(`<${contentType}>`);
340
- break;
341
- }
342
- logger.groupEnd();
343
-
344
- logger.groupEnd();
345
- }
346
-
347
- async function logResponse(
348
- logger: Logger | undefined,
349
- res: Response,
350
- req: Request,
351
- ) {
352
- if (!logger) {
353
- return;
354
- }
355
-
356
- const contentType = res.headers.get("content-type");
357
- const ct = contentType?.split(";")[0] || "";
358
-
359
- logger.group(`< Response: ${req.method} ${req.url}`);
360
- logger.log("Status Code:", res.status, res.statusText);
361
-
362
- logger.group("Headers:");
363
- for (const [k, v] of res.headers.entries()) {
364
- logger.log(`${k}: ${v}`);
365
- }
366
- logger.groupEnd();
367
-
368
- logger.group("Body:");
369
- switch (true) {
370
- case matchContentType(res, "application/json")
371
- || jsonLikeContentTypeRE.test(ct):
372
- logger.log(await res.clone().json());
373
- break;
374
- case matchContentType(res, "text/event-stream"):
375
- logger.log(`<${contentType}>`);
376
- break;
377
- case matchContentType(res, "text/*"):
378
- logger.log(await res.clone().text());
379
- break;
380
- case matchContentType(res, "multipart/form-data"): {
381
- const body = await res.clone().formData();
382
- for (const [k, v] of body) {
383
- const vlabel = v instanceof Blob ? "<Blob>" : v;
384
- logger.log(`${k}: ${vlabel}`);
385
- }
386
- break;
387
- }
388
- default:
389
- logger.log(`<${contentType}>`);
390
- break;
391
- }
392
- logger.groupEnd();
393
-
394
- logger.groupEnd();
395
- }