mavenagi 0.0.0-alpha.11 → 0.0.0-alpha.14

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 (289) hide show
  1. package/Client.d.ts +9 -0
  2. package/README.md +49 -5
  3. package/api/resources/actions/client/Client.d.ts +9 -0
  4. package/api/resources/actions/client/Client.js +18 -15
  5. package/api/resources/commons/types/AppUser.d.ts +3 -2
  6. package/api/resources/commons/types/AppUserIdentifier.d.ts +1 -1
  7. package/api/resources/commons/types/AppUserRequest.d.ts +19 -1
  8. package/api/resources/commons/types/AppUserResponse.d.ts +34 -2
  9. package/api/resources/commons/types/EntityType.d.ts +2 -1
  10. package/api/resources/commons/types/EntityType.js +1 -0
  11. package/api/resources/commons/types/Feedback.d.ts +4 -8
  12. package/api/resources/commons/types/FeedbackBase.d.ts +10 -0
  13. package/api/resources/commons/types/UserData.d.ts +1 -1
  14. package/api/resources/commons/types/index.d.ts +4 -2
  15. package/api/resources/commons/types/index.js +4 -2
  16. package/api/resources/conversation/client/Client.d.ts +39 -22
  17. package/api/resources/conversation/client/Client.js +97 -77
  18. package/api/resources/conversation/types/AskRequest.d.ts +2 -4
  19. package/api/resources/conversation/types/ConversationBase.d.ts +12 -0
  20. package/api/resources/conversation/types/ConversationMessageBase.d.ts +4 -3
  21. package/api/resources/conversation/types/ConversationRequest.d.ts +0 -2
  22. package/api/resources/conversation/types/ConversationResponse.d.ts +0 -2
  23. package/api/resources/conversation/types/FeedbackRequest.d.ts +8 -1
  24. package/api/resources/conversation/types/SubmitActionFormRequest.d.ts +1 -3
  25. package/api/resources/conversation/types/UserMessageBase.d.ts +2 -0
  26. package/api/resources/conversation/types/index.d.ts +0 -2
  27. package/api/resources/conversation/types/index.js +0 -2
  28. package/api/resources/knowledge/client/Client.d.ts +9 -0
  29. package/api/resources/knowledge/client/Client.js +44 -37
  30. package/api/resources/triggers/client/Client.d.ts +9 -0
  31. package/api/resources/triggers/client/Client.js +18 -15
  32. package/api/resources/triggers/types/index.d.ts +0 -3
  33. package/api/resources/triggers/types/index.js +0 -3
  34. package/api/resources/users/client/Client.d.ts +27 -14
  35. package/api/resources/users/client/Client.js +32 -26
  36. package/core/fetcher/Fetcher.d.ts +4 -1
  37. package/core/fetcher/Fetcher.js +18 -159
  38. package/core/fetcher/createRequestUrl.d.ts +1 -0
  39. package/core/fetcher/createRequestUrl.js +6 -0
  40. package/core/fetcher/getFetchFn.d.ts +4 -0
  41. package/core/fetcher/getFetchFn.js +32 -0
  42. package/core/fetcher/getRequestBody.d.ts +7 -0
  43. package/core/fetcher/getRequestBody.js +19 -0
  44. package/core/fetcher/getResponseBody.d.ts +1 -0
  45. package/core/fetcher/getResponseBody.js +48 -0
  46. package/core/fetcher/makeRequest.d.ts +1 -0
  47. package/core/fetcher/makeRequest.js +38 -0
  48. package/core/fetcher/requestWithRetries.d.ts +1 -0
  49. package/core/fetcher/requestWithRetries.js +28 -0
  50. package/core/fetcher/signals.d.ts +12 -0
  51. package/core/fetcher/signals.js +32 -0
  52. package/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.d.ts +30 -0
  53. package/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.js +222 -0
  54. package/core/fetcher/stream-wrappers/NodePre18StreamWrapper.d.ts +21 -0
  55. package/core/fetcher/stream-wrappers/NodePre18StreamWrapper.js +104 -0
  56. package/core/fetcher/stream-wrappers/UndiciStreamWrapper.d.ts +30 -0
  57. package/core/fetcher/stream-wrappers/UndiciStreamWrapper.js +204 -0
  58. package/core/fetcher/stream-wrappers/chooseStreamWrapper.d.ts +17 -0
  59. package/core/fetcher/stream-wrappers/chooseStreamWrapper.js +23 -0
  60. package/core/runtime/runtime.d.ts +1 -0
  61. package/core/runtime/runtime.js +1 -0
  62. package/core/schemas/Schema.d.ts +7 -4
  63. package/core/schemas/builders/lazy/lazy.d.ts +2 -2
  64. package/core/schemas/builders/lazy/lazy.js +8 -19
  65. package/core/schemas/builders/lazy/lazyObject.js +1 -10
  66. package/core/schemas/builders/list/list.js +31 -44
  67. package/core/schemas/builders/object/object.js +90 -111
  68. package/core/schemas/builders/object/types.d.ts +2 -2
  69. package/core/schemas/builders/object-like/getObjectLikeUtils.js +3 -12
  70. package/core/schemas/builders/record/record.js +49 -60
  71. package/core/schemas/builders/schema-utils/getSchemaUtils.d.ts +2 -2
  72. package/core/schemas/builders/schema-utils/getSchemaUtils.js +18 -21
  73. package/core/schemas/builders/set/set.js +6 -15
  74. package/core/schemas/builders/undiscriminated-union/undiscriminatedUnion.js +21 -32
  75. package/core/schemas/builders/union/union.js +51 -62
  76. package/core/schemas/utils/maybeSkipValidation.js +3 -12
  77. package/dist/Client.d.ts +9 -0
  78. package/dist/api/resources/actions/client/Client.d.ts +9 -0
  79. package/dist/api/resources/actions/client/Client.js +18 -15
  80. package/dist/api/resources/commons/types/AppUser.d.ts +3 -2
  81. package/dist/api/resources/commons/types/AppUserIdentifier.d.ts +1 -1
  82. package/dist/api/resources/commons/types/AppUserRequest.d.ts +19 -1
  83. package/dist/api/resources/commons/types/AppUserResponse.d.ts +34 -2
  84. package/dist/api/resources/commons/types/EntityType.d.ts +2 -1
  85. package/dist/api/resources/commons/types/EntityType.js +1 -0
  86. package/dist/api/resources/commons/types/Feedback.d.ts +4 -8
  87. package/dist/api/resources/commons/types/FeedbackBase.d.ts +10 -0
  88. package/dist/api/resources/commons/types/UserData.d.ts +1 -1
  89. package/dist/api/resources/commons/types/index.d.ts +4 -2
  90. package/dist/api/resources/commons/types/index.js +4 -2
  91. package/dist/api/resources/conversation/client/Client.d.ts +39 -22
  92. package/dist/api/resources/conversation/client/Client.js +97 -77
  93. package/dist/api/resources/conversation/types/AskRequest.d.ts +2 -4
  94. package/dist/api/resources/conversation/types/ConversationBase.d.ts +12 -0
  95. package/dist/api/resources/conversation/types/ConversationMessageBase.d.ts +4 -3
  96. package/dist/api/resources/conversation/types/ConversationRequest.d.ts +0 -2
  97. package/dist/api/resources/conversation/types/ConversationResponse.d.ts +0 -2
  98. package/dist/api/resources/conversation/types/FeedbackRequest.d.ts +8 -1
  99. package/dist/api/resources/conversation/types/SubmitActionFormRequest.d.ts +1 -3
  100. package/dist/api/resources/conversation/types/UserMessageBase.d.ts +2 -0
  101. package/dist/api/resources/conversation/types/index.d.ts +0 -2
  102. package/dist/api/resources/conversation/types/index.js +0 -2
  103. package/dist/api/resources/knowledge/client/Client.d.ts +9 -0
  104. package/dist/api/resources/knowledge/client/Client.js +44 -37
  105. package/dist/api/resources/triggers/client/Client.d.ts +9 -0
  106. package/dist/api/resources/triggers/client/Client.js +18 -15
  107. package/dist/api/resources/triggers/types/index.d.ts +0 -3
  108. package/dist/api/resources/triggers/types/index.js +0 -3
  109. package/dist/api/resources/users/client/Client.d.ts +27 -14
  110. package/dist/api/resources/users/client/Client.js +32 -26
  111. package/dist/core/fetcher/Fetcher.d.ts +4 -1
  112. package/dist/core/fetcher/Fetcher.js +18 -159
  113. package/dist/core/fetcher/createRequestUrl.d.ts +1 -0
  114. package/dist/core/fetcher/createRequestUrl.js +6 -0
  115. package/dist/core/fetcher/getFetchFn.d.ts +4 -0
  116. package/dist/core/fetcher/getFetchFn.js +32 -0
  117. package/dist/core/fetcher/getRequestBody.d.ts +7 -0
  118. package/dist/core/fetcher/getRequestBody.js +19 -0
  119. package/dist/core/fetcher/getResponseBody.d.ts +1 -0
  120. package/dist/core/fetcher/getResponseBody.js +48 -0
  121. package/dist/core/fetcher/makeRequest.d.ts +1 -0
  122. package/dist/core/fetcher/makeRequest.js +38 -0
  123. package/dist/core/fetcher/requestWithRetries.d.ts +1 -0
  124. package/dist/core/fetcher/requestWithRetries.js +28 -0
  125. package/dist/core/fetcher/signals.d.ts +12 -0
  126. package/dist/core/fetcher/signals.js +32 -0
  127. package/dist/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.d.ts +30 -0
  128. package/dist/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.js +222 -0
  129. package/dist/core/fetcher/stream-wrappers/NodePre18StreamWrapper.d.ts +21 -0
  130. package/dist/core/fetcher/stream-wrappers/NodePre18StreamWrapper.js +104 -0
  131. package/dist/core/fetcher/stream-wrappers/UndiciStreamWrapper.d.ts +30 -0
  132. package/dist/core/fetcher/stream-wrappers/UndiciStreamWrapper.js +204 -0
  133. package/dist/core/fetcher/stream-wrappers/chooseStreamWrapper.d.ts +17 -0
  134. package/dist/core/fetcher/stream-wrappers/chooseStreamWrapper.js +23 -0
  135. package/dist/core/runtime/runtime.d.ts +1 -0
  136. package/dist/core/runtime/runtime.js +1 -0
  137. package/dist/core/schemas/Schema.d.ts +7 -4
  138. package/dist/core/schemas/builders/lazy/lazy.d.ts +2 -2
  139. package/dist/core/schemas/builders/lazy/lazy.js +8 -19
  140. package/dist/core/schemas/builders/lazy/lazyObject.js +1 -10
  141. package/dist/core/schemas/builders/list/list.js +31 -44
  142. package/dist/core/schemas/builders/object/object.js +90 -111
  143. package/dist/core/schemas/builders/object/types.d.ts +2 -2
  144. package/dist/core/schemas/builders/object-like/getObjectLikeUtils.js +3 -12
  145. package/dist/core/schemas/builders/record/record.js +49 -60
  146. package/dist/core/schemas/builders/schema-utils/getSchemaUtils.d.ts +2 -2
  147. package/dist/core/schemas/builders/schema-utils/getSchemaUtils.js +18 -21
  148. package/dist/core/schemas/builders/set/set.js +6 -15
  149. package/dist/core/schemas/builders/undiscriminated-union/undiscriminatedUnion.js +21 -32
  150. package/dist/core/schemas/builders/union/union.js +51 -62
  151. package/dist/core/schemas/utils/maybeSkipValidation.js +3 -12
  152. package/dist/serialization/resources/commons/types/AppUser.d.ts +3 -3
  153. package/dist/serialization/resources/commons/types/AppUser.js +3 -3
  154. package/dist/serialization/resources/commons/types/AppUserIdentifier.d.ts +1 -1
  155. package/dist/serialization/resources/commons/types/AppUserIdentifier.js +1 -1
  156. package/dist/serialization/resources/commons/types/AppUserRequest.d.ts +1 -1
  157. package/dist/serialization/resources/commons/types/AppUserRequest.js +1 -1
  158. package/dist/serialization/resources/commons/types/AppUserResponse.d.ts +2 -1
  159. package/dist/serialization/resources/commons/types/AppUserResponse.js +2 -1
  160. package/dist/serialization/resources/commons/types/EntityType.d.ts +1 -1
  161. package/dist/serialization/resources/commons/types/EntityType.js +1 -0
  162. package/{serialization/resources/triggers → dist/serialization/resources/commons}/types/EventTriggerResponse.d.ts +1 -1
  163. package/{serialization/resources/triggers → dist/serialization/resources/commons}/types/EventTriggerResponse.js +1 -1
  164. package/dist/serialization/resources/commons/types/Feedback.d.ts +6 -7
  165. package/dist/serialization/resources/commons/types/Feedback.js +9 -8
  166. package/dist/serialization/resources/commons/types/FeedbackBase.d.ts +14 -0
  167. package/dist/serialization/resources/commons/types/FeedbackBase.js +9 -0
  168. package/dist/serialization/resources/commons/types/UserData.d.ts +1 -1
  169. package/dist/serialization/resources/commons/types/UserData.js +1 -1
  170. package/dist/serialization/resources/commons/types/index.d.ts +4 -2
  171. package/dist/serialization/resources/commons/types/index.js +4 -2
  172. package/dist/serialization/resources/conversation/types/AskRequest.d.ts +1 -4
  173. package/dist/serialization/resources/conversation/types/AskRequest.js +1 -4
  174. package/dist/serialization/resources/conversation/types/ConversationBase.d.ts +6 -0
  175. package/dist/serialization/resources/conversation/types/ConversationBase.js +6 -0
  176. package/dist/serialization/resources/conversation/types/ConversationMessageBase.d.ts +2 -2
  177. package/dist/serialization/resources/conversation/types/ConversationMessageBase.js +2 -2
  178. package/dist/serialization/resources/conversation/types/ConversationRequest.d.ts +0 -2
  179. package/dist/serialization/resources/conversation/types/ConversationRequest.js +0 -2
  180. package/dist/serialization/resources/conversation/types/ConversationResponse.d.ts +0 -2
  181. package/dist/serialization/resources/conversation/types/ConversationResponse.js +0 -2
  182. package/dist/serialization/resources/conversation/types/FeedbackRequest.d.ts +7 -2
  183. package/dist/serialization/resources/conversation/types/FeedbackRequest.js +10 -2
  184. package/dist/serialization/resources/conversation/types/SubmitActionFormRequest.d.ts +0 -2
  185. package/dist/serialization/resources/conversation/types/SubmitActionFormRequest.js +0 -2
  186. package/dist/serialization/resources/conversation/types/UserMessageBase.d.ts +2 -0
  187. package/dist/serialization/resources/conversation/types/UserMessageBase.js +2 -0
  188. package/dist/serialization/resources/conversation/types/index.d.ts +0 -2
  189. package/dist/serialization/resources/conversation/types/index.js +0 -2
  190. package/dist/serialization/resources/triggers/types/EventTriggerRequest.d.ts +1 -1
  191. package/dist/serialization/resources/triggers/types/EventTriggerRequest.js +1 -1
  192. package/dist/serialization/resources/triggers/types/index.d.ts +0 -3
  193. package/dist/serialization/resources/triggers/types/index.js +0 -3
  194. package/package.json +7 -2
  195. package/reference.md +1732 -0
  196. package/serialization/resources/commons/types/AppUser.d.ts +3 -3
  197. package/serialization/resources/commons/types/AppUser.js +3 -3
  198. package/serialization/resources/commons/types/AppUserIdentifier.d.ts +1 -1
  199. package/serialization/resources/commons/types/AppUserIdentifier.js +1 -1
  200. package/serialization/resources/commons/types/AppUserRequest.d.ts +1 -1
  201. package/serialization/resources/commons/types/AppUserRequest.js +1 -1
  202. package/serialization/resources/commons/types/AppUserResponse.d.ts +2 -1
  203. package/serialization/resources/commons/types/AppUserResponse.js +2 -1
  204. package/serialization/resources/commons/types/EntityType.d.ts +1 -1
  205. package/serialization/resources/commons/types/EntityType.js +1 -0
  206. package/{dist/serialization/resources/triggers → serialization/resources/commons}/types/EventTriggerResponse.d.ts +1 -1
  207. package/{dist/serialization/resources/triggers → serialization/resources/commons}/types/EventTriggerResponse.js +1 -1
  208. package/serialization/resources/commons/types/Feedback.d.ts +6 -7
  209. package/serialization/resources/commons/types/Feedback.js +9 -8
  210. package/serialization/resources/commons/types/FeedbackBase.d.ts +14 -0
  211. package/serialization/resources/commons/types/FeedbackBase.js +9 -0
  212. package/serialization/resources/commons/types/UserData.d.ts +1 -1
  213. package/serialization/resources/commons/types/UserData.js +1 -1
  214. package/serialization/resources/commons/types/index.d.ts +4 -2
  215. package/serialization/resources/commons/types/index.js +4 -2
  216. package/serialization/resources/conversation/types/AskRequest.d.ts +1 -4
  217. package/serialization/resources/conversation/types/AskRequest.js +1 -4
  218. package/serialization/resources/conversation/types/ConversationBase.d.ts +6 -0
  219. package/serialization/resources/conversation/types/ConversationBase.js +6 -0
  220. package/serialization/resources/conversation/types/ConversationMessageBase.d.ts +2 -2
  221. package/serialization/resources/conversation/types/ConversationMessageBase.js +2 -2
  222. package/serialization/resources/conversation/types/ConversationRequest.d.ts +0 -2
  223. package/serialization/resources/conversation/types/ConversationRequest.js +0 -2
  224. package/serialization/resources/conversation/types/ConversationResponse.d.ts +0 -2
  225. package/serialization/resources/conversation/types/ConversationResponse.js +0 -2
  226. package/serialization/resources/conversation/types/FeedbackRequest.d.ts +7 -2
  227. package/serialization/resources/conversation/types/FeedbackRequest.js +10 -2
  228. package/serialization/resources/conversation/types/SubmitActionFormRequest.d.ts +0 -2
  229. package/serialization/resources/conversation/types/SubmitActionFormRequest.js +0 -2
  230. package/serialization/resources/conversation/types/UserMessageBase.d.ts +2 -0
  231. package/serialization/resources/conversation/types/UserMessageBase.js +2 -0
  232. package/serialization/resources/conversation/types/index.d.ts +0 -2
  233. package/serialization/resources/conversation/types/index.js +0 -2
  234. package/serialization/resources/triggers/types/EventTriggerRequest.d.ts +1 -1
  235. package/serialization/resources/triggers/types/EventTriggerRequest.js +1 -1
  236. package/serialization/resources/triggers/types/index.d.ts +0 -3
  237. package/serialization/resources/triggers/types/index.js +0 -3
  238. package/api/resources/commons/types/AppUserIdentification.d.ts +0 -8
  239. package/api/resources/commons/types/User.d.ts +0 -10
  240. package/api/resources/conversation/types/ConversationContext.d.ts +0 -20
  241. package/api/resources/conversation/types/ConversationContext.js +0 -4
  242. package/api/resources/conversation/types/ConversationMessageContext.d.ts +0 -12
  243. package/api/resources/conversation/types/ConversationMessageContext.js +0 -4
  244. package/dist/api/resources/commons/types/AppUserIdentification.d.ts +0 -8
  245. package/dist/api/resources/commons/types/AppUserIdentification.js +0 -4
  246. package/dist/api/resources/commons/types/User.d.ts +0 -10
  247. package/dist/api/resources/commons/types/User.js +0 -4
  248. package/dist/api/resources/conversation/types/ConversationContext.d.ts +0 -20
  249. package/dist/api/resources/conversation/types/ConversationContext.js +0 -4
  250. package/dist/api/resources/conversation/types/ConversationMessageContext.d.ts +0 -12
  251. package/dist/api/resources/conversation/types/ConversationMessageContext.js +0 -4
  252. package/dist/serialization/resources/commons/types/AppUserIdentification.d.ts +0 -13
  253. package/dist/serialization/resources/commons/types/AppUserIdentification.js +0 -8
  254. package/dist/serialization/resources/commons/types/User.d.ts +0 -15
  255. package/dist/serialization/resources/commons/types/User.js +0 -10
  256. package/dist/serialization/resources/conversation/types/ConversationContext.d.ts +0 -20
  257. package/dist/serialization/resources/conversation/types/ConversationContext.js +0 -15
  258. package/dist/serialization/resources/conversation/types/ConversationMessageContext.d.ts +0 -16
  259. package/dist/serialization/resources/conversation/types/ConversationMessageContext.js +0 -11
  260. package/serialization/resources/commons/types/AppUserIdentification.d.ts +0 -13
  261. package/serialization/resources/commons/types/AppUserIdentification.js +0 -8
  262. package/serialization/resources/commons/types/User.d.ts +0 -15
  263. package/serialization/resources/commons/types/User.js +0 -10
  264. package/serialization/resources/conversation/types/ConversationContext.d.ts +0 -20
  265. package/serialization/resources/conversation/types/ConversationContext.js +0 -15
  266. package/serialization/resources/conversation/types/ConversationMessageContext.d.ts +0 -16
  267. package/serialization/resources/conversation/types/ConversationMessageContext.js +0 -11
  268. /package/api/resources/{triggers → commons}/types/EventTriggerBase.d.ts +0 -0
  269. /package/api/resources/{triggers → commons}/types/EventTriggerBase.js +0 -0
  270. /package/api/resources/{triggers → commons}/types/EventTriggerResponse.d.ts +0 -0
  271. /package/api/resources/{triggers → commons}/types/EventTriggerResponse.js +0 -0
  272. /package/api/resources/{triggers → commons}/types/EventTriggerType.d.ts +0 -0
  273. /package/api/resources/{triggers → commons}/types/EventTriggerType.js +0 -0
  274. /package/api/resources/commons/types/{AppUserIdentification.js → FeedbackBase.js} +0 -0
  275. /package/dist/api/resources/{triggers → commons}/types/EventTriggerBase.d.ts +0 -0
  276. /package/dist/api/resources/{triggers → commons}/types/EventTriggerBase.js +0 -0
  277. /package/dist/api/resources/{triggers → commons}/types/EventTriggerResponse.d.ts +0 -0
  278. /package/dist/api/resources/{triggers → commons}/types/EventTriggerResponse.js +0 -0
  279. /package/dist/api/resources/{triggers → commons}/types/EventTriggerType.d.ts +0 -0
  280. /package/dist/api/resources/{triggers → commons}/types/EventTriggerType.js +0 -0
  281. /package/{api/resources/commons/types/User.js → dist/api/resources/commons/types/FeedbackBase.js} +0 -0
  282. /package/dist/serialization/resources/{triggers → commons}/types/EventTriggerBase.d.ts +0 -0
  283. /package/dist/serialization/resources/{triggers → commons}/types/EventTriggerBase.js +0 -0
  284. /package/dist/serialization/resources/{triggers → commons}/types/EventTriggerType.d.ts +0 -0
  285. /package/dist/serialization/resources/{triggers → commons}/types/EventTriggerType.js +0 -0
  286. /package/serialization/resources/{triggers → commons}/types/EventTriggerBase.d.ts +0 -0
  287. /package/serialization/resources/{triggers → commons}/types/EventTriggerBase.js +0 -0
  288. /package/serialization/resources/{triggers → commons}/types/EventTriggerType.d.ts +0 -0
  289. /package/serialization/resources/{triggers → commons}/types/EventTriggerType.js +0 -0
@@ -21,7 +21,7 @@ export class Users {
21
21
  this._options = _options;
22
22
  }
23
23
  /**
24
- * Create a new user or update an existing one
24
+ * Update a user or create it if it doesn't exist.
25
25
  *
26
26
  * @param {MavenAGI.AppUserRequest} request
27
27
  * @param {Users.RequestOptions} requestOptions - Request-specific configuration.
@@ -31,19 +31,23 @@ export class Users {
31
31
  * @throws {@link MavenAGI.ServerError}
32
32
  *
33
33
  * @example
34
- * await client.users.upsertAppUser({
35
- * appUserId: {
36
- * referenceId: "string"
34
+ * await client.users.createOrUpdate({
35
+ * userId: {
36
+ * referenceId: "user-0"
37
37
  * },
38
- * userIdentifiers: {
39
- * identifiers: new Set([{}])
40
- * },
41
- * metadata: {
42
- * "string": {}
38
+ * identifiers: new Set([{
39
+ * value: "joe@myapp.com",
40
+ * type: MavenAGI.AppUserIdentifyingPropertyType.Email
41
+ * }]),
42
+ * data: {
43
+ * "name": {
44
+ * value: "Joe",
45
+ * visibility: MavenAGI.VisibilityType.Visible
46
+ * }
43
47
  * }
44
48
  * })
45
49
  */
46
- upsertAppUser(request, requestOptions) {
50
+ createOrUpdate(request, requestOptions) {
47
51
  var _a, _b;
48
52
  return __awaiter(this, void 0, void 0, function* () {
49
53
  const _response = yield ((_a = this._options.fetcher) !== null && _a !== void 0 ? _a : core.fetcher)({
@@ -55,18 +59,19 @@ export class Users {
55
59
  "X-Agent-Id": yield core.Supplier.get(this._options.agentId),
56
60
  "X-Fern-Language": "JavaScript",
57
61
  "X-Fern-SDK-Name": "mavenagi",
58
- "X-Fern-SDK-Version": "0.0.0-alpha.11",
62
+ "X-Fern-SDK-Version": "0.0.0-alpha.14",
59
63
  "X-Fern-Runtime": core.RUNTIME.type,
60
64
  "X-Fern-Runtime-Version": core.RUNTIME.version,
61
65
  },
62
66
  contentType: "application/json",
63
- body: yield serializers.AppUserRequest.jsonOrThrow(request, { unrecognizedObjectKeys: "strip" }),
67
+ requestType: "json",
68
+ body: serializers.AppUserRequest.jsonOrThrow(request, { unrecognizedObjectKeys: "strip" }),
64
69
  timeoutMs: (requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeoutInSeconds) != null ? requestOptions.timeoutInSeconds * 1000 : 60000,
65
70
  maxRetries: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.maxRetries,
66
71
  abortSignal: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.abortSignal,
67
72
  });
68
73
  if (_response.ok) {
69
- return yield serializers.AppUserResponse.parseOrThrow(_response.body, {
74
+ return serializers.AppUserResponse.parseOrThrow(_response.body, {
70
75
  unrecognizedObjectKeys: "passthrough",
71
76
  allowUnrecognizedUnionMembers: true,
72
77
  allowUnrecognizedEnumValues: true,
@@ -76,21 +81,21 @@ export class Users {
76
81
  if (_response.error.reason === "status-code") {
77
82
  switch (_response.error.statusCode) {
78
83
  case 404:
79
- throw new MavenAGI.NotFoundError(yield serializers.ErrorMessage.parseOrThrow(_response.error.body, {
84
+ throw new MavenAGI.NotFoundError(serializers.ErrorMessage.parseOrThrow(_response.error.body, {
80
85
  unrecognizedObjectKeys: "passthrough",
81
86
  allowUnrecognizedUnionMembers: true,
82
87
  allowUnrecognizedEnumValues: true,
83
88
  breadcrumbsPrefix: ["response"],
84
89
  }));
85
90
  case 400:
86
- throw new MavenAGI.BadRequestError(yield serializers.ErrorMessage.parseOrThrow(_response.error.body, {
91
+ throw new MavenAGI.BadRequestError(serializers.ErrorMessage.parseOrThrow(_response.error.body, {
87
92
  unrecognizedObjectKeys: "passthrough",
88
93
  allowUnrecognizedUnionMembers: true,
89
94
  allowUnrecognizedEnumValues: true,
90
95
  breadcrumbsPrefix: ["response"],
91
96
  }));
92
97
  case 500:
93
- throw new MavenAGI.ServerError(yield serializers.ErrorMessage.parseOrThrow(_response.error.body, {
98
+ throw new MavenAGI.ServerError(serializers.ErrorMessage.parseOrThrow(_response.error.body, {
94
99
  unrecognizedObjectKeys: "passthrough",
95
100
  allowUnrecognizedUnionMembers: true,
96
101
  allowUnrecognizedEnumValues: true,
@@ -119,9 +124,9 @@ export class Users {
119
124
  });
120
125
  }
121
126
  /**
122
- * Get a user
127
+ * Get a user by its supplied ID
123
128
  *
124
- * @param {string} userId - Externally supplied unique ID of the user
129
+ * @param {string} userId - The reference ID of the user to get. All other entity ID fields are inferred from the request.
125
130
  * @param {Users.RequestOptions} requestOptions - Request-specific configuration.
126
131
  *
127
132
  * @throws {@link MavenAGI.NotFoundError}
@@ -129,13 +134,13 @@ export class Users {
129
134
  * @throws {@link MavenAGI.ServerError}
130
135
  *
131
136
  * @example
132
- * await client.users.getAppUser("string")
137
+ * await client.users.get("user-0")
133
138
  */
134
- getAppUser(userId, requestOptions) {
139
+ get(userId, requestOptions) {
135
140
  var _a, _b;
136
141
  return __awaiter(this, void 0, void 0, function* () {
137
142
  const _response = yield ((_a = this._options.fetcher) !== null && _a !== void 0 ? _a : core.fetcher)({
138
- url: urlJoin((_b = (yield core.Supplier.get(this._options.environment))) !== null && _b !== void 0 ? _b : environments.MavenAGIEnvironment.Production, `/v1/users/agent_user/${encodeURIComponent(userId)}`),
143
+ url: urlJoin((_b = (yield core.Supplier.get(this._options.environment))) !== null && _b !== void 0 ? _b : environments.MavenAGIEnvironment.Production, `/v1/users/${encodeURIComponent(userId)}`),
139
144
  method: "GET",
140
145
  headers: {
141
146
  Authorization: yield this._getAuthorizationHeader(),
@@ -143,17 +148,18 @@ export class Users {
143
148
  "X-Agent-Id": yield core.Supplier.get(this._options.agentId),
144
149
  "X-Fern-Language": "JavaScript",
145
150
  "X-Fern-SDK-Name": "mavenagi",
146
- "X-Fern-SDK-Version": "0.0.0-alpha.11",
151
+ "X-Fern-SDK-Version": "0.0.0-alpha.14",
147
152
  "X-Fern-Runtime": core.RUNTIME.type,
148
153
  "X-Fern-Runtime-Version": core.RUNTIME.version,
149
154
  },
150
155
  contentType: "application/json",
156
+ requestType: "json",
151
157
  timeoutMs: (requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeoutInSeconds) != null ? requestOptions.timeoutInSeconds * 1000 : 60000,
152
158
  maxRetries: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.maxRetries,
153
159
  abortSignal: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.abortSignal,
154
160
  });
155
161
  if (_response.ok) {
156
- return yield serializers.AppUserResponse.parseOrThrow(_response.body, {
162
+ return serializers.AppUserResponse.parseOrThrow(_response.body, {
157
163
  unrecognizedObjectKeys: "passthrough",
158
164
  allowUnrecognizedUnionMembers: true,
159
165
  allowUnrecognizedEnumValues: true,
@@ -163,21 +169,21 @@ export class Users {
163
169
  if (_response.error.reason === "status-code") {
164
170
  switch (_response.error.statusCode) {
165
171
  case 404:
166
- throw new MavenAGI.NotFoundError(yield serializers.ErrorMessage.parseOrThrow(_response.error.body, {
172
+ throw new MavenAGI.NotFoundError(serializers.ErrorMessage.parseOrThrow(_response.error.body, {
167
173
  unrecognizedObjectKeys: "passthrough",
168
174
  allowUnrecognizedUnionMembers: true,
169
175
  allowUnrecognizedEnumValues: true,
170
176
  breadcrumbsPrefix: ["response"],
171
177
  }));
172
178
  case 400:
173
- throw new MavenAGI.BadRequestError(yield serializers.ErrorMessage.parseOrThrow(_response.error.body, {
179
+ throw new MavenAGI.BadRequestError(serializers.ErrorMessage.parseOrThrow(_response.error.body, {
174
180
  unrecognizedObjectKeys: "passthrough",
175
181
  allowUnrecognizedUnionMembers: true,
176
182
  allowUnrecognizedEnumValues: true,
177
183
  breadcrumbsPrefix: ["response"],
178
184
  }));
179
185
  case 500:
180
- throw new MavenAGI.ServerError(yield serializers.ErrorMessage.parseOrThrow(_response.error.body, {
186
+ throw new MavenAGI.ServerError(serializers.ErrorMessage.parseOrThrow(_response.error.body, {
181
187
  unrecognizedObjectKeys: "passthrough",
182
188
  allowUnrecognizedUnionMembers: true,
183
189
  allowUnrecognizedEnumValues: true,
@@ -12,7 +12,9 @@ export declare namespace Fetcher {
12
12
  maxRetries?: number;
13
13
  withCredentials?: boolean;
14
14
  abortSignal?: AbortSignal;
15
- responseType?: "json" | "blob" | "streaming" | "text";
15
+ requestType?: "json" | "file" | "bytes";
16
+ responseType?: "json" | "blob" | "sse" | "streaming" | "text";
17
+ duplex?: "half";
16
18
  }
17
19
  type Error = FailedStatusCodeError | NonJsonError | TimeoutError | UnknownError;
18
20
  interface FailedStatusCodeError {
@@ -33,4 +35,5 @@ export declare namespace Fetcher {
33
35
  errorMessage: string;
34
36
  }
35
37
  }
38
+ export declare function fetcherImpl<R = unknown>(args: Fetcher.Args): Promise<APIResponse<R, Fetcher.Error>>;
36
39
  export declare const fetcher: FetchFunction;
@@ -7,13 +7,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import qs from "qs";
11
- import { RUNTIME } from "../runtime";
12
- const INITIAL_RETRY_DELAY = 1;
13
- const MAX_RETRY_DELAY = 60;
14
- const DEFAULT_MAX_RETRIES = 2;
15
- function fetcherImpl(args) {
16
- var _a, _b;
10
+ import { createRequestUrl } from "./createRequestUrl";
11
+ import { getFetchFn } from "./getFetchFn";
12
+ import { getRequestBody } from "./getRequestBody";
13
+ import { getResponseBody } from "./getResponseBody";
14
+ import { makeRequest } from "./makeRequest";
15
+ import { requestWithRetries } from "./requestWithRetries";
16
+ export function fetcherImpl(args) {
17
17
  return __awaiter(this, void 0, void 0, function* () {
18
18
  const headers = {};
19
19
  if (args.body !== undefined && args.contentType != null) {
@@ -26,112 +26,21 @@ function fetcherImpl(args) {
26
26
  }
27
27
  }
28
28
  }
29
- const url = Object.keys((_a = args.queryParameters) !== null && _a !== void 0 ? _a : {}).length > 0
30
- ? `${args.url}?${qs.stringify(args.queryParameters, { arrayFormat: "repeat" })}`
31
- : args.url;
32
- let body = undefined;
33
- const maybeStringifyBody = (body) => {
34
- if (body instanceof Uint8Array) {
35
- return body;
36
- }
37
- else if (args.contentType === "application/x-www-form-urlencoded" && typeof args.body === "string") {
38
- return args.body;
39
- }
40
- else {
41
- return JSON.stringify(body);
42
- }
43
- };
44
- if (RUNTIME.type === "node") {
45
- if (args.body instanceof (yield import("formdata-node")).FormData) {
46
- // @ts-expect-error
47
- body = args.body;
48
- }
49
- else {
50
- body = maybeStringifyBody(args.body);
51
- }
52
- }
53
- else {
54
- if (args.body instanceof (yield import("form-data")).default) {
55
- // @ts-expect-error
56
- body = args.body;
57
- }
58
- else {
59
- body = maybeStringifyBody(args.body);
60
- }
61
- }
62
- const fetchFn = yield getFetchFn();
63
- const makeRequest = () => __awaiter(this, void 0, void 0, function* () {
64
- const signals = [];
65
- // Add timeout signal
66
- let timeoutAbortId = undefined;
67
- if (args.timeoutMs != null) {
68
- const { signal, abortId } = getTimeoutSignal(args.timeoutMs);
69
- timeoutAbortId = abortId;
70
- signals.push(signal);
71
- }
72
- // Add arbitrary signal
73
- if (args.abortSignal != null) {
74
- signals.push(args.abortSignal);
75
- }
76
- const response = yield fetchFn(url, {
77
- method: args.method,
78
- headers,
79
- body,
80
- signal: anySignal(signals),
81
- credentials: args.withCredentials ? "include" : undefined,
82
- });
83
- if (timeoutAbortId != null) {
84
- clearTimeout(timeoutAbortId);
85
- }
86
- return response;
29
+ const url = createRequestUrl(args.url, args.queryParameters);
30
+ let requestBody = yield getRequestBody({
31
+ body: args.body,
32
+ type: args.requestType === "json" ? "json" : "other",
87
33
  });
34
+ const fetchFn = yield getFetchFn();
88
35
  try {
89
- let response = yield makeRequest();
90
- for (let i = 0; i < ((_b = args.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_MAX_RETRIES); ++i) {
91
- if (response.status === 408 ||
92
- response.status === 409 ||
93
- response.status === 429 ||
94
- response.status >= 500) {
95
- const delay = Math.min(INITIAL_RETRY_DELAY * Math.pow(i, 2), MAX_RETRY_DELAY);
96
- yield new Promise((resolve) => setTimeout(resolve, delay));
97
- response = yield makeRequest();
98
- }
99
- else {
100
- break;
101
- }
102
- }
103
- let body;
104
- if (response.body != null && args.responseType === "blob") {
105
- body = yield response.blob();
106
- }
107
- else if (response.body != null && args.responseType === "streaming") {
108
- body = response.body;
109
- }
110
- else if (response.body != null && args.responseType === "text") {
111
- body = yield response.text();
112
- }
113
- else {
114
- const text = yield response.text();
115
- if (text.length > 0) {
116
- try {
117
- body = JSON.parse(text);
118
- }
119
- catch (err) {
120
- return {
121
- ok: false,
122
- error: {
123
- reason: "non-json",
124
- statusCode: response.status,
125
- rawBody: text,
126
- },
127
- };
128
- }
129
- }
130
- }
36
+ const response = yield requestWithRetries(() => __awaiter(this, void 0, void 0, function* () {
37
+ return makeRequest(fetchFn, url, args.method, headers, requestBody, args.timeoutMs, args.abortSignal, args.withCredentials, args.duplex);
38
+ }), args.maxRetries);
39
+ let responseBody = yield getResponseBody(response, args.responseType);
131
40
  if (response.status >= 200 && response.status < 400) {
132
41
  return {
133
42
  ok: true,
134
- body: body,
43
+ body: responseBody,
135
44
  headers: response.headers,
136
45
  };
137
46
  }
@@ -141,7 +50,7 @@ function fetcherImpl(args) {
141
50
  error: {
142
51
  reason: "status-code",
143
52
  statusCode: response.status,
144
- body,
53
+ body: responseBody,
145
54
  },
146
55
  };
147
56
  }
@@ -183,54 +92,4 @@ function fetcherImpl(args) {
183
92
  }
184
93
  });
185
94
  }
186
- const TIMEOUT = "timeout";
187
- function getTimeoutSignal(timeoutMs) {
188
- const controller = new AbortController();
189
- const abortId = setTimeout(() => controller.abort(TIMEOUT), timeoutMs);
190
- return { signal: controller.signal, abortId };
191
- }
192
- /**
193
- * Returns an abort signal that is getting aborted when
194
- * at least one of the specified abort signals is aborted.
195
- *
196
- * Requires at least node.js 18.
197
- */
198
- function anySignal(...args) {
199
- // Allowing signals to be passed either as array
200
- // of signals or as multiple arguments.
201
- const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args);
202
- const controller = new AbortController();
203
- for (const signal of signals) {
204
- if (signal.aborted) {
205
- // Exiting early if one of the signals
206
- // is already aborted.
207
- controller.abort(signal === null || signal === void 0 ? void 0 : signal.reason);
208
- break;
209
- }
210
- // Listening for signals and removing the listeners
211
- // when at least one symbol is aborted.
212
- signal.addEventListener("abort", () => controller.abort(signal === null || signal === void 0 ? void 0 : signal.reason), {
213
- signal: controller.signal,
214
- });
215
- }
216
- return controller.signal;
217
- }
218
- /**
219
- * Returns a fetch function based on the runtime
220
- */
221
- function getFetchFn() {
222
- return __awaiter(this, void 0, void 0, function* () {
223
- // In Node.js environments, the SDK always uses`node-fetch`.
224
- if (RUNTIME.type === "node") {
225
- return (yield import("node-fetch")).default;
226
- }
227
- // Otherwise the SDK uses global fetch if available,
228
- // and falls back to node-fetch.
229
- if (typeof fetch == "function") {
230
- return fetch;
231
- }
232
- // Defaults to node `node-fetch` if global fetch isn't available
233
- return (yield import("node-fetch")).default;
234
- });
235
- }
236
95
  export const fetcher = fetcherImpl;
@@ -0,0 +1 @@
1
+ export declare function createRequestUrl(baseUrl: string, queryParameters?: Record<string, string | string[] | object | object[]>): string;
@@ -0,0 +1,6 @@
1
+ import qs from "qs";
2
+ export function createRequestUrl(baseUrl, queryParameters) {
3
+ return Object.keys(queryParameters !== null && queryParameters !== void 0 ? queryParameters : {}).length > 0
4
+ ? `${baseUrl}?${qs.stringify(queryParameters, { arrayFormat: "repeat" })}`
5
+ : baseUrl;
6
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Returns a fetch function based on the runtime
3
+ */
4
+ export declare function getFetchFn(): Promise<any>;
@@ -0,0 +1,32 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { RUNTIME } from "../runtime";
11
+ /**
12
+ * Returns a fetch function based on the runtime
13
+ */
14
+ export function getFetchFn() {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ // In Node.js 18+ environments, use native fetch
17
+ if (RUNTIME.type === "node" && RUNTIME.parsedVersion != null && RUNTIME.parsedVersion >= 18) {
18
+ return fetch;
19
+ }
20
+ // In Node.js 18 or lower environments, the SDK always uses`node-fetch`.
21
+ if (RUNTIME.type === "node") {
22
+ return (yield import("node-fetch")).default;
23
+ }
24
+ // Otherwise the SDK uses global fetch if available,
25
+ // and falls back to node-fetch.
26
+ if (typeof fetch == "function") {
27
+ return fetch;
28
+ }
29
+ // Defaults to node `node-fetch` if global fetch isn't available
30
+ return (yield import("node-fetch")).default;
31
+ });
32
+ }
@@ -0,0 +1,7 @@
1
+ export declare namespace GetRequestBody {
2
+ interface Args {
3
+ body: unknown;
4
+ type: "json" | "file" | "bytes" | "other";
5
+ }
6
+ }
7
+ export declare function getRequestBody({ body, type }: GetRequestBody.Args): Promise<BodyInit | undefined>;
@@ -0,0 +1,19 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ export function getRequestBody({ body, type }) {
11
+ return __awaiter(this, void 0, void 0, function* () {
12
+ if (type.includes("json")) {
13
+ return JSON.stringify(body);
14
+ }
15
+ else {
16
+ return body;
17
+ }
18
+ });
19
+ }
@@ -0,0 +1 @@
1
+ export declare function getResponseBody(response: Response, responseType?: string): Promise<unknown>;
@@ -0,0 +1,48 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { chooseStreamWrapper } from "./stream-wrappers/chooseStreamWrapper";
11
+ export function getResponseBody(response, responseType) {
12
+ return __awaiter(this, void 0, void 0, function* () {
13
+ if (response.body != null && responseType === "blob") {
14
+ return yield response.blob();
15
+ }
16
+ else if (response.body != null && responseType === "sse") {
17
+ return response.body;
18
+ }
19
+ else if (response.body != null && responseType === "streaming") {
20
+ return chooseStreamWrapper(response.body);
21
+ }
22
+ else if (response.body != null && responseType === "text") {
23
+ return yield response.text();
24
+ }
25
+ else {
26
+ const text = yield response.text();
27
+ if (text.length > 0) {
28
+ try {
29
+ let responseBody = JSON.parse(text);
30
+ return responseBody;
31
+ }
32
+ catch (err) {
33
+ return {
34
+ ok: false,
35
+ error: {
36
+ reason: "non-json",
37
+ statusCode: response.status,
38
+ rawBody: text,
39
+ },
40
+ };
41
+ }
42
+ }
43
+ else {
44
+ return undefined;
45
+ }
46
+ }
47
+ });
48
+ }
@@ -0,0 +1 @@
1
+ export declare const makeRequest: (fetchFn: (url: string, init: RequestInit) => Promise<Response>, url: string, method: string, headers: Record<string, string>, requestBody: BodyInit | undefined, timeoutMs?: number | undefined, abortSignal?: AbortSignal | undefined, withCredentials?: boolean | undefined, duplex?: "half" | undefined) => Promise<Response>;
@@ -0,0 +1,38 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { anySignal, getTimeoutSignal } from "./signals";
11
+ export const makeRequest = (fetchFn, url, method, headers, requestBody, timeoutMs, abortSignal, withCredentials, duplex) => __awaiter(void 0, void 0, void 0, function* () {
12
+ const signals = [];
13
+ // Add timeout signal
14
+ let timeoutAbortId = undefined;
15
+ if (timeoutMs != null) {
16
+ const { signal, abortId } = getTimeoutSignal(timeoutMs);
17
+ timeoutAbortId = abortId;
18
+ signals.push(signal);
19
+ }
20
+ // Add arbitrary signal
21
+ if (abortSignal != null) {
22
+ signals.push(abortSignal);
23
+ }
24
+ let newSignals = anySignal(signals);
25
+ const response = yield fetchFn(url, {
26
+ method: method,
27
+ headers,
28
+ body: requestBody,
29
+ signal: newSignals,
30
+ credentials: withCredentials ? "include" : undefined,
31
+ // @ts-ignore
32
+ duplex,
33
+ });
34
+ if (timeoutAbortId != null) {
35
+ clearTimeout(timeoutAbortId);
36
+ }
37
+ return response;
38
+ });
@@ -0,0 +1 @@
1
+ export declare function requestWithRetries(requestFn: () => Promise<Response>, maxRetries?: number): Promise<Response>;
@@ -0,0 +1,28 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ const INITIAL_RETRY_DELAY = 1;
11
+ const MAX_RETRY_DELAY = 60;
12
+ const DEFAULT_MAX_RETRIES = 2;
13
+ export function requestWithRetries(requestFn, maxRetries = DEFAULT_MAX_RETRIES) {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ let response = yield requestFn();
16
+ for (let i = 0; i < maxRetries; ++i) {
17
+ if ([408, 409, 429].includes(response.status) || response.status >= 500) {
18
+ const delay = Math.min(INITIAL_RETRY_DELAY * Math.pow(2, i), MAX_RETRY_DELAY);
19
+ yield new Promise((resolve) => setTimeout(resolve, delay));
20
+ response = yield requestFn();
21
+ }
22
+ else {
23
+ break;
24
+ }
25
+ }
26
+ return response;
27
+ });
28
+ }
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ export declare function getTimeoutSignal(timeoutMs: number): {
3
+ signal: AbortSignal;
4
+ abortId: NodeJS.Timeout;
5
+ };
6
+ /**
7
+ * Returns an abort signal that is getting aborted when
8
+ * at least one of the specified abort signals is aborted.
9
+ *
10
+ * Requires at least node.js 18.
11
+ */
12
+ export declare function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal;
@@ -0,0 +1,32 @@
1
+ const TIMEOUT = "timeout";
2
+ export function getTimeoutSignal(timeoutMs) {
3
+ const controller = new AbortController();
4
+ const abortId = setTimeout(() => controller.abort(TIMEOUT), timeoutMs);
5
+ return { signal: controller.signal, abortId };
6
+ }
7
+ /**
8
+ * Returns an abort signal that is getting aborted when
9
+ * at least one of the specified abort signals is aborted.
10
+ *
11
+ * Requires at least node.js 18.
12
+ */
13
+ export function anySignal(...args) {
14
+ // Allowing signals to be passed either as array
15
+ // of signals or as multiple arguments.
16
+ const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args);
17
+ const controller = new AbortController();
18
+ for (const signal of signals) {
19
+ if (signal.aborted) {
20
+ // Exiting early if one of the signals
21
+ // is already aborted.
22
+ controller.abort(signal === null || signal === void 0 ? void 0 : signal.reason);
23
+ break;
24
+ }
25
+ // Listening for signals and removing the listeners
26
+ // when at least one symbol is aborted.
27
+ signal.addEventListener("abort", () => controller.abort(signal === null || signal === void 0 ? void 0 : signal.reason), {
28
+ signal: controller.signal,
29
+ });
30
+ }
31
+ return controller.signal;
32
+ }