@anthropic-ai/sdk 0.5.0 → 0.5.2

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 (334) hide show
  1. package/{dist/esm/_shims → _shims}/agent.d.ts +2 -2
  2. package/_shims/agent.d.ts.map +1 -0
  3. package/_shims/agent.js.map +1 -0
  4. package/{dist/esm/_shims/agent.js → _shims/agent.mjs} +1 -1
  5. package/_shims/agent.mjs.map +1 -0
  6. package/{dist/esm/_shims → _shims}/agent.node.d.ts +1 -0
  7. package/_shims/agent.node.d.ts.map +1 -0
  8. package/_shims/agent.node.js.map +1 -0
  9. package/{dist/esm/_shims/agent.node.js → _shims/agent.node.mjs} +1 -1
  10. package/_shims/agent.node.mjs.map +1 -0
  11. package/_shims/fetch.d.ts +52 -0
  12. package/_shims/fetch.js +13 -0
  13. package/_shims/fetch.mjs +15 -0
  14. package/_shims/fetch.node.d.ts +53 -0
  15. package/_shims/fetch.node.js +12 -0
  16. package/_shims/fetch.node.mjs +14 -0
  17. package/{dist/cjs/_shims → _shims}/fileFromPath.d.ts +1 -2
  18. package/_shims/fileFromPath.d.ts.map +1 -0
  19. package/_shims/fileFromPath.js +16 -0
  20. package/_shims/fileFromPath.js.map +1 -0
  21. package/{dist/esm/_shims/fileFromPath.js → _shims/fileFromPath.mjs} +1 -1
  22. package/_shims/fileFromPath.mjs.map +1 -0
  23. package/{dist/cjs/_shims → _shims}/fileFromPath.node.d.ts +1 -2
  24. package/_shims/fileFromPath.node.d.ts.map +1 -0
  25. package/_shims/fileFromPath.node.js +17 -0
  26. package/_shims/fileFromPath.node.js.map +1 -0
  27. package/{dist/esm/_shims/fileFromPath.node.js → _shims/fileFromPath.node.mjs} +1 -1
  28. package/_shims/fileFromPath.node.mjs.map +1 -0
  29. package/_shims/formdata.d.ts +43 -0
  30. package/_shims/formdata.js +9 -0
  31. package/{dist/esm/_shims/formdata.js → _shims/formdata.mjs} +7 -11
  32. package/_shims/formdata.node.d.ts +44 -0
  33. package/_shims/formdata.node.js +11 -0
  34. package/_shims/getMultipartRequestOptions.d.ts.map +1 -0
  35. package/_shims/getMultipartRequestOptions.js +12 -0
  36. package/_shims/getMultipartRequestOptions.js.map +1 -0
  37. package/_shims/getMultipartRequestOptions.mjs +8 -0
  38. package/_shims/getMultipartRequestOptions.mjs.map +1 -0
  39. package/_shims/getMultipartRequestOptions.node.d.ts.map +1 -0
  40. package/_shims/getMultipartRequestOptions.node.js +22 -0
  41. package/_shims/getMultipartRequestOptions.node.js.map +1 -0
  42. package/{dist/esm/_shims/getMultipartRequestOptions.node.js → _shims/getMultipartRequestOptions.node.mjs} +3 -2
  43. package/_shims/getMultipartRequestOptions.node.mjs.map +1 -0
  44. package/_shims/node-readable.d.ts +23 -0
  45. package/_shims/node-readable.d.ts.map +1 -0
  46. package/_shims/node-readable.js +11 -0
  47. package/_shims/node-readable.js.map +1 -0
  48. package/_shims/node-readable.mjs +7 -0
  49. package/_shims/node-readable.mjs.map +1 -0
  50. package/_shims/node-readable.node.d.ts +8 -0
  51. package/_shims/node-readable.node.d.ts.map +1 -0
  52. package/_shims/node-readable.node.js +9 -0
  53. package/_shims/node-readable.node.js.map +1 -0
  54. package/_shims/node-readable.node.mjs +5 -0
  55. package/_shims/node-readable.node.mjs.map +1 -0
  56. package/{dist/esm/core.d.ts → core.d.ts} +15 -10
  57. package/core.d.ts.map +1 -0
  58. package/{dist/cjs/core.js → core.js} +191 -333
  59. package/core.js.map +1 -0
  60. package/{dist/esm/core.js → core.mjs} +56 -25
  61. package/core.mjs.map +1 -0
  62. package/error.d.ts.map +1 -0
  63. package/{dist/cjs/error.js → error.js} +1 -1
  64. package/error.js.map +1 -0
  65. package/{dist/esm/error.js → error.mjs} +5 -3
  66. package/error.mjs.map +1 -0
  67. package/{dist/cjs/index.d.ts → index.d.mts} +42 -7
  68. package/{dist/esm/index.d.ts → index.d.ts} +38 -3
  69. package/index.d.ts.map +1 -0
  70. package/{dist/cjs/index.js → index.js} +17 -15
  71. package/index.js.map +1 -0
  72. package/{dist/esm/index.js → index.mjs} +12 -6
  73. package/index.mjs.map +1 -0
  74. package/package.json +34 -77
  75. package/resource.d.ts.map +1 -0
  76. package/resource.js.map +1 -0
  77. package/{dist/esm/resource.js → resource.mjs} +1 -1
  78. package/resource.mjs.map +1 -0
  79. package/{dist/esm/resources → resources}/completions.d.ts +3 -3
  80. package/resources/completions.d.ts.map +1 -0
  81. package/{dist/cjs/resources → resources}/completions.js +7 -7
  82. package/resources/completions.js.map +1 -0
  83. package/resources/completions.mjs +15 -0
  84. package/resources/completions.mjs.map +1 -0
  85. package/resources/index.d.ts.map +1 -0
  86. package/{dist/cjs/resources → resources}/index.js +1 -1
  87. package/resources/index.js.map +1 -0
  88. package/resources/index.mjs +3 -0
  89. package/resources/index.mjs.map +1 -0
  90. package/resources/top-level.d.ts.map +1 -0
  91. package/resources/top-level.js.map +1 -0
  92. package/{dist/esm/resources/top-level.js → resources/top-level.mjs} +1 -1
  93. package/resources/top-level.mjs.map +1 -0
  94. package/{_shims → src/_shims}/agent.node.ts +2 -0
  95. package/{_shims → src/_shims}/agent.ts +2 -2
  96. package/src/_shims/fetch.d.ts +52 -0
  97. package/src/_shims/fetch.js +13 -0
  98. package/src/_shims/fetch.mjs +15 -0
  99. package/src/_shims/fetch.node.d.ts +53 -0
  100. package/src/_shims/fetch.node.js +12 -0
  101. package/src/_shims/fetch.node.mjs +14 -0
  102. package/{_shims → src/_shims}/fileFromPath.node.ts +1 -2
  103. package/{_shims → src/_shims}/fileFromPath.ts +1 -2
  104. package/src/_shims/formdata.d.ts +43 -0
  105. package/src/_shims/formdata.js +9 -0
  106. package/src/_shims/formdata.mjs +11 -0
  107. package/src/_shims/formdata.node.d.ts +44 -0
  108. package/src/_shims/formdata.node.js +11 -0
  109. package/{dist/esm/_shims/formdata.node.js → src/_shims/formdata.node.mjs} +3 -1
  110. package/{_shims → src/_shims}/getMultipartRequestOptions.node.ts +2 -1
  111. package/{_shims → src/_shims}/getMultipartRequestOptions.ts +2 -1
  112. package/src/_shims/node-readable.node.ts +10 -0
  113. package/src/_shims/node-readable.ts +30 -0
  114. package/{core.ts → src/core.ts} +42 -20
  115. package/{index.ts → src/index.ts} +50 -3
  116. package/{resources → src/resources}/completions.ts +4 -4
  117. package/{streaming.ts → src/streaming.ts} +76 -13
  118. package/src/uploads.ts +248 -0
  119. package/src/version.ts +1 -0
  120. package/{dist/esm/streaming.d.ts → streaming.d.ts} +2 -0
  121. package/streaming.d.ts.map +1 -0
  122. package/streaming.js +216 -0
  123. package/streaming.js.map +1 -0
  124. package/{dist/esm/streaming.js → streaming.mjs} +62 -13
  125. package/streaming.mjs.map +1 -0
  126. package/uploads.d.ts +90 -0
  127. package/uploads.d.ts.map +1 -0
  128. package/uploads.js +207 -0
  129. package/uploads.js.map +1 -0
  130. package/uploads.mjs +174 -0
  131. package/uploads.mjs.map +1 -0
  132. package/version.d.ts +2 -0
  133. package/version.d.ts.map +1 -0
  134. package/{dist/cjs/version.js → version.js} +1 -1
  135. package/version.js.map +1 -0
  136. package/version.mjs +2 -0
  137. package/version.mjs.map +1 -0
  138. package/_shims/fetch.node.ts +0 -11
  139. package/_shims/fetch.ts +0 -32
  140. package/_shims/formdata.ts +0 -22
  141. package/_shims/newFileArgs.ts +0 -94
  142. package/_shims/toFile.node.ts +0 -25
  143. package/_shims/toFile.ts +0 -26
  144. package/_shims/uploadable.node.ts +0 -21
  145. package/_shims/uploadable.ts +0 -82
  146. package/check-version.ts +0 -18
  147. package/dist/cjs/_shims/agent.d.ts +0 -9
  148. package/dist/cjs/_shims/agent.d.ts.map +0 -1
  149. package/dist/cjs/_shims/agent.js.map +0 -1
  150. package/dist/cjs/_shims/agent.node.d.ts +0 -6
  151. package/dist/cjs/_shims/agent.node.d.ts.map +0 -1
  152. package/dist/cjs/_shims/agent.node.js.map +0 -1
  153. package/dist/cjs/_shims/fetch.d.ts +0 -19
  154. package/dist/cjs/_shims/fetch.d.ts.map +0 -1
  155. package/dist/cjs/_shims/fetch.js +0 -24
  156. package/dist/cjs/_shims/fetch.js.map +0 -1
  157. package/dist/cjs/_shims/fetch.node.d.ts +0 -9
  158. package/dist/cjs/_shims/fetch.node.d.ts.map +0 -1
  159. package/dist/cjs/_shims/fetch.node.js +0 -68
  160. package/dist/cjs/_shims/fetch.node.js.map +0 -1
  161. package/dist/cjs/_shims/fileFromPath.d.ts.map +0 -1
  162. package/dist/cjs/_shims/fileFromPath.js +0 -49
  163. package/dist/cjs/_shims/fileFromPath.js.map +0 -1
  164. package/dist/cjs/_shims/fileFromPath.node.d.ts.map +0 -1
  165. package/dist/cjs/_shims/fileFromPath.node.js +0 -50
  166. package/dist/cjs/_shims/fileFromPath.node.js.map +0 -1
  167. package/dist/cjs/_shims/formdata.d.ts +0 -13
  168. package/dist/cjs/_shims/formdata.d.ts.map +0 -1
  169. package/dist/cjs/_shims/formdata.js +0 -20
  170. package/dist/cjs/_shims/formdata.js.map +0 -1
  171. package/dist/cjs/_shims/formdata.node.d.ts +0 -7
  172. package/dist/cjs/_shims/formdata.node.d.ts.map +0 -1
  173. package/dist/cjs/_shims/formdata.node.js +0 -27
  174. package/dist/cjs/_shims/formdata.node.js.map +0 -1
  175. package/dist/cjs/_shims/getMultipartRequestOptions.d.ts +0 -10
  176. package/dist/cjs/_shims/getMultipartRequestOptions.d.ts.map +0 -1
  177. package/dist/cjs/_shims/getMultipartRequestOptions.js +0 -44
  178. package/dist/cjs/_shims/getMultipartRequestOptions.js.map +0 -1
  179. package/dist/cjs/_shims/getMultipartRequestOptions.node.d.ts +0 -10
  180. package/dist/cjs/_shims/getMultipartRequestOptions.node.d.ts.map +0 -1
  181. package/dist/cjs/_shims/getMultipartRequestOptions.node.js +0 -52
  182. package/dist/cjs/_shims/getMultipartRequestOptions.node.js.map +0 -1
  183. package/dist/cjs/_shims/newFileArgs.d.ts +0 -19
  184. package/dist/cjs/_shims/newFileArgs.d.ts.map +0 -1
  185. package/dist/cjs/_shims/newFileArgs.js +0 -169
  186. package/dist/cjs/_shims/newFileArgs.js.map +0 -1
  187. package/dist/cjs/_shims/toFile.d.ts +0 -21
  188. package/dist/cjs/_shims/toFile.d.ts.map +0 -1
  189. package/dist/cjs/_shims/toFile.js +0 -56
  190. package/dist/cjs/_shims/toFile.js.map +0 -1
  191. package/dist/cjs/_shims/toFile.node.d.ts +0 -20
  192. package/dist/cjs/_shims/toFile.node.d.ts.map +0 -1
  193. package/dist/cjs/_shims/toFile.node.js +0 -56
  194. package/dist/cjs/_shims/toFile.node.js.map +0 -1
  195. package/dist/cjs/_shims/uploadable.d.ts +0 -56
  196. package/dist/cjs/_shims/uploadable.d.ts.map +0 -1
  197. package/dist/cjs/_shims/uploadable.js +0 -37
  198. package/dist/cjs/_shims/uploadable.js.map +0 -1
  199. package/dist/cjs/_shims/uploadable.node.d.ts +0 -7
  200. package/dist/cjs/_shims/uploadable.node.d.ts.map +0 -1
  201. package/dist/cjs/_shims/uploadable.node.js +0 -23
  202. package/dist/cjs/_shims/uploadable.node.js.map +0 -1
  203. package/dist/cjs/check-version.d.ts +0 -2
  204. package/dist/cjs/check-version.d.ts.map +0 -1
  205. package/dist/cjs/check-version.js +0 -23
  206. package/dist/cjs/check-version.js.map +0 -1
  207. package/dist/cjs/core.d.ts +0 -221
  208. package/dist/cjs/core.d.ts.map +0 -1
  209. package/dist/cjs/core.js.map +0 -1
  210. package/dist/cjs/error.d.ts +0 -48
  211. package/dist/cjs/error.d.ts.map +0 -1
  212. package/dist/cjs/error.js.map +0 -1
  213. package/dist/cjs/index.d.ts.map +0 -1
  214. package/dist/cjs/index.js.map +0 -1
  215. package/dist/cjs/resource.d.ts +0 -12
  216. package/dist/cjs/resource.d.ts.map +0 -1
  217. package/dist/cjs/resource.js.map +0 -1
  218. package/dist/cjs/resources/completions.d.ts +0 -311
  219. package/dist/cjs/resources/completions.d.ts.map +0 -1
  220. package/dist/cjs/resources/completions.js.map +0 -1
  221. package/dist/cjs/resources/index.d.ts +0 -2
  222. package/dist/cjs/resources/index.d.ts.map +0 -1
  223. package/dist/cjs/resources/index.js.map +0 -1
  224. package/dist/cjs/resources/top-level.d.ts.map +0 -1
  225. package/dist/cjs/resources/top-level.js.map +0 -1
  226. package/dist/cjs/streaming.d.ts +0 -12
  227. package/dist/cjs/streaming.d.ts.map +0 -1
  228. package/dist/cjs/streaming.js +0 -297
  229. package/dist/cjs/streaming.js.map +0 -1
  230. package/dist/cjs/uploads.d.ts +0 -24
  231. package/dist/cjs/uploads.d.ts.map +0 -1
  232. package/dist/cjs/uploads.js +0 -121
  233. package/dist/cjs/uploads.js.map +0 -1
  234. package/dist/cjs/version.d.ts +0 -2
  235. package/dist/cjs/version.d.ts.map +0 -1
  236. package/dist/cjs/version.js.map +0 -1
  237. package/dist/esm/_shims/agent.d.ts.map +0 -1
  238. package/dist/esm/_shims/agent.js.map +0 -1
  239. package/dist/esm/_shims/agent.node.d.ts.map +0 -1
  240. package/dist/esm/_shims/agent.node.js.map +0 -1
  241. package/dist/esm/_shims/fetch.d.ts +0 -19
  242. package/dist/esm/_shims/fetch.d.ts.map +0 -1
  243. package/dist/esm/_shims/fetch.js +0 -18
  244. package/dist/esm/_shims/fetch.js.map +0 -1
  245. package/dist/esm/_shims/fetch.node.d.ts +0 -9
  246. package/dist/esm/_shims/fetch.node.d.ts.map +0 -1
  247. package/dist/esm/_shims/fetch.node.js +0 -7
  248. package/dist/esm/_shims/fetch.node.js.map +0 -1
  249. package/dist/esm/_shims/fileFromPath.d.ts +0 -23
  250. package/dist/esm/_shims/fileFromPath.d.ts.map +0 -1
  251. package/dist/esm/_shims/fileFromPath.js.map +0 -1
  252. package/dist/esm/_shims/fileFromPath.node.d.ts +0 -18
  253. package/dist/esm/_shims/fileFromPath.node.d.ts.map +0 -1
  254. package/dist/esm/_shims/fileFromPath.node.js.map +0 -1
  255. package/dist/esm/_shims/formdata.d.ts +0 -13
  256. package/dist/esm/_shims/formdata.d.ts.map +0 -1
  257. package/dist/esm/_shims/formdata.js.map +0 -1
  258. package/dist/esm/_shims/formdata.node.d.ts +0 -7
  259. package/dist/esm/_shims/formdata.node.d.ts.map +0 -1
  260. package/dist/esm/_shims/formdata.node.js.map +0 -1
  261. package/dist/esm/_shims/getMultipartRequestOptions.d.ts.map +0 -1
  262. package/dist/esm/_shims/getMultipartRequestOptions.js +0 -7
  263. package/dist/esm/_shims/getMultipartRequestOptions.js.map +0 -1
  264. package/dist/esm/_shims/getMultipartRequestOptions.node.d.ts.map +0 -1
  265. package/dist/esm/_shims/getMultipartRequestOptions.node.js.map +0 -1
  266. package/dist/esm/_shims/newFileArgs.d.ts +0 -19
  267. package/dist/esm/_shims/newFileArgs.d.ts.map +0 -1
  268. package/dist/esm/_shims/newFileArgs.js +0 -66
  269. package/dist/esm/_shims/newFileArgs.js.map +0 -1
  270. package/dist/esm/_shims/toFile.d.ts +0 -21
  271. package/dist/esm/_shims/toFile.d.ts.map +0 -1
  272. package/dist/esm/_shims/toFile.js +0 -19
  273. package/dist/esm/_shims/toFile.js.map +0 -1
  274. package/dist/esm/_shims/toFile.node.d.ts +0 -20
  275. package/dist/esm/_shims/toFile.node.d.ts.map +0 -1
  276. package/dist/esm/_shims/toFile.node.js +0 -19
  277. package/dist/esm/_shims/toFile.node.js.map +0 -1
  278. package/dist/esm/_shims/uploadable.d.ts +0 -56
  279. package/dist/esm/_shims/uploadable.d.ts.map +0 -1
  280. package/dist/esm/_shims/uploadable.js +0 -30
  281. package/dist/esm/_shims/uploadable.js.map +0 -1
  282. package/dist/esm/_shims/uploadable.node.d.ts +0 -7
  283. package/dist/esm/_shims/uploadable.node.d.ts.map +0 -1
  284. package/dist/esm/_shims/uploadable.node.js +0 -10
  285. package/dist/esm/_shims/uploadable.node.js.map +0 -1
  286. package/dist/esm/check-version.d.ts +0 -2
  287. package/dist/esm/check-version.d.ts.map +0 -1
  288. package/dist/esm/check-version.js +0 -16
  289. package/dist/esm/check-version.js.map +0 -1
  290. package/dist/esm/core.d.ts.map +0 -1
  291. package/dist/esm/core.js.map +0 -1
  292. package/dist/esm/error.d.ts.map +0 -1
  293. package/dist/esm/error.js.map +0 -1
  294. package/dist/esm/index.d.ts.map +0 -1
  295. package/dist/esm/index.js.map +0 -1
  296. package/dist/esm/package.json +0 -3
  297. package/dist/esm/resource.d.ts.map +0 -1
  298. package/dist/esm/resource.js.map +0 -1
  299. package/dist/esm/resources/completions.d.ts.map +0 -1
  300. package/dist/esm/resources/completions.js +0 -9
  301. package/dist/esm/resources/completions.js.map +0 -1
  302. package/dist/esm/resources/index.d.ts.map +0 -1
  303. package/dist/esm/resources/index.js +0 -3
  304. package/dist/esm/resources/index.js.map +0 -1
  305. package/dist/esm/resources/top-level.d.ts +0 -2
  306. package/dist/esm/resources/top-level.d.ts.map +0 -1
  307. package/dist/esm/resources/top-level.js.map +0 -1
  308. package/dist/esm/streaming.d.ts.map +0 -1
  309. package/dist/esm/streaming.js.map +0 -1
  310. package/dist/esm/uploads.d.ts +0 -24
  311. package/dist/esm/uploads.d.ts.map +0 -1
  312. package/dist/esm/uploads.js +0 -61
  313. package/dist/esm/uploads.js.map +0 -1
  314. package/dist/esm/version.d.ts +0 -2
  315. package/dist/esm/version.d.ts.map +0 -1
  316. package/dist/esm/version.js +0 -2
  317. package/dist/esm/version.js.map +0 -1
  318. package/uploads.ts +0 -81
  319. package/version.ts +0 -1
  320. /package/{dist/cjs/_shims → _shims}/agent.js +0 -0
  321. /package/{dist/cjs/_shims → _shims}/agent.node.js +0 -0
  322. /package/_shims/{formdata.node.ts → formdata.node.mjs} +0 -0
  323. /package/{dist/esm/_shims → _shims}/getMultipartRequestOptions.d.ts +0 -0
  324. /package/{dist/esm/_shims → _shims}/getMultipartRequestOptions.node.d.ts +0 -0
  325. /package/{dist/esm/error.d.ts → error.d.ts} +0 -0
  326. /package/{dist/esm/resource.d.ts → resource.d.ts} +0 -0
  327. /package/{dist/cjs/resource.js → resource.js} +0 -0
  328. /package/{dist/esm/resources → resources}/index.d.ts +0 -0
  329. /package/{dist/cjs/resources → resources}/top-level.d.ts +0 -0
  330. /package/{dist/cjs/resources → resources}/top-level.js +0 -0
  331. /package/{error.ts → src/error.ts} +0 -0
  332. /package/{resource.ts → src/resource.ts} +0 -0
  333. /package/{resources → src/resources}/index.ts +0 -0
  334. /package/{resources → src/resources}/top-level.ts +0 -0
package/streaming.js ADDED
@@ -0,0 +1,216 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.Stream = void 0;
4
+ const core_1 = require('./core.js');
5
+ const core_2 = require('@anthropic-ai/sdk/core');
6
+ const error_1 = require('@anthropic-ai/sdk/error');
7
+ class SSEDecoder {
8
+ constructor() {
9
+ this.event = null;
10
+ this.data = [];
11
+ this.chunks = [];
12
+ }
13
+ decode(line) {
14
+ if (line.endsWith('\r')) {
15
+ line = line.substring(0, line.length - 1);
16
+ }
17
+ if (!line) {
18
+ // empty line and we didn't previously encounter any messages
19
+ if (!this.event && !this.data.length) return null;
20
+ const sse = {
21
+ event: this.event,
22
+ data: this.data.join('\n'),
23
+ raw: this.chunks,
24
+ };
25
+ this.event = null;
26
+ this.data = [];
27
+ this.chunks = [];
28
+ return sse;
29
+ }
30
+ this.chunks.push(line);
31
+ if (line.startsWith(':')) {
32
+ return null;
33
+ }
34
+ let [fieldname, _, value] = partition(line, ':');
35
+ if (value.startsWith(' ')) {
36
+ value = value.substring(1);
37
+ }
38
+ if (fieldname === 'event') {
39
+ this.event = value;
40
+ } else if (fieldname === 'data') {
41
+ this.data.push(value);
42
+ }
43
+ return null;
44
+ }
45
+ }
46
+ class Stream {
47
+ constructor(response, controller) {
48
+ this.response = response;
49
+ this.controller = controller;
50
+ this.decoder = new SSEDecoder();
51
+ this.responseHeaders = (0, core_1.createResponseHeaders)(response.headers);
52
+ }
53
+ async *iterMessages() {
54
+ if (!this.response.body) {
55
+ this.controller.abort();
56
+ throw new Error(`Attempted to iterate over a response with no body`);
57
+ }
58
+ const lineDecoder = new LineDecoder();
59
+ const iter = readableStreamAsyncIterable(this.response.body);
60
+ for await (const chunk of iter) {
61
+ const text = decodeText(chunk);
62
+ for (const line of lineDecoder.decode(text)) {
63
+ const sse = this.decoder.decode(line);
64
+ if (sse) yield sse;
65
+ }
66
+ }
67
+ for (const line of lineDecoder.flush()) {
68
+ const sse = this.decoder.decode(line);
69
+ if (sse) yield sse;
70
+ }
71
+ }
72
+ async *[Symbol.asyncIterator]() {
73
+ try {
74
+ for await (const sse of this.iterMessages()) {
75
+ if (sse.event === 'completion') {
76
+ try {
77
+ yield JSON.parse(sse.data);
78
+ } catch (e) {
79
+ console.error(`Could not parse message into JSON:`, sse.data);
80
+ console.error(`From chunk:`, sse.raw);
81
+ throw e;
82
+ }
83
+ }
84
+ if (sse.event === 'ping') {
85
+ continue;
86
+ }
87
+ if (sse.event === 'error') {
88
+ const errText = sse.data;
89
+ const errJSON = (0, core_2.safeJSON)(errText);
90
+ const errMessage = errJSON ? undefined : errText;
91
+ throw error_1.APIError.generate(undefined, errJSON, errMessage, this.responseHeaders);
92
+ }
93
+ }
94
+ } catch (e) {
95
+ // If the user calls `stream.controller.abort()`, we should exit without throwing.
96
+ if (e instanceof Error && e.name === 'AbortError') return;
97
+ throw e;
98
+ } finally {
99
+ // If the user `break`s, abort the ongoing request.
100
+ this.controller.abort();
101
+ }
102
+ }
103
+ }
104
+ exports.Stream = Stream;
105
+ const NEWLINE_CHARS = '\n\r\x0b\x0c\x1c\x1d\x1e\x85\u2028\u2029';
106
+ /**
107
+ * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally
108
+ * reading lines from text.
109
+ *
110
+ * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258
111
+ */
112
+ class LineDecoder {
113
+ constructor() {
114
+ this.buffer = [];
115
+ this.trailingCR = false;
116
+ }
117
+ decode(text) {
118
+ if (this.trailingCR) {
119
+ text = '\r' + text;
120
+ this.trailingCR = false;
121
+ }
122
+ if (text.endsWith('\r')) {
123
+ this.trailingCR = true;
124
+ text = text.slice(0, -1);
125
+ }
126
+ if (!text) {
127
+ return [];
128
+ }
129
+ const trailing_newline = NEWLINE_CHARS.includes(text.slice(-1));
130
+ let lines = text.split(/\r\n|[\n\r\x0b\x0c\x1c\x1d\x1e\x85\u2028\u2029]/g);
131
+ if (lines.length === 1 && !trailing_newline) {
132
+ this.buffer.push(lines[0]);
133
+ return [];
134
+ }
135
+ if (this.buffer.length > 0) {
136
+ lines = [this.buffer.join('') + lines[0], ...lines.slice(1)];
137
+ this.buffer = [];
138
+ }
139
+ if (!trailing_newline) {
140
+ this.buffer = [lines.pop() || ''];
141
+ }
142
+ return lines;
143
+ }
144
+ flush() {
145
+ if (!this.buffer.length && !this.trailingCR) {
146
+ return [];
147
+ }
148
+ const lines = [this.buffer.join('')];
149
+ this.buffer = [];
150
+ this.trailingCR = false;
151
+ return lines;
152
+ }
153
+ }
154
+ function partition(str, delimiter) {
155
+ const index = str.indexOf(delimiter);
156
+ if (index !== -1) {
157
+ return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];
158
+ }
159
+ return [str, '', ''];
160
+ }
161
+ let _textDecoder;
162
+ function decodeText(bytes) {
163
+ if (bytes == null) return '';
164
+ if (typeof bytes === 'string') return bytes;
165
+ // Node:
166
+ if (typeof Buffer !== 'undefined') {
167
+ if (bytes instanceof Buffer) {
168
+ return bytes.toString();
169
+ }
170
+ if (bytes instanceof Uint8Array) {
171
+ return Buffer.from(bytes).toString();
172
+ }
173
+ throw new Error(`Unexpected: received non-Uint8Array (${bytes.constructor.name}) in Node.`);
174
+ }
175
+ // Browser
176
+ if (typeof TextDecoder !== 'undefined') {
177
+ if (bytes instanceof Uint8Array || bytes instanceof ArrayBuffer) {
178
+ _textDecoder !== null && _textDecoder !== void 0 ?
179
+ _textDecoder
180
+ : (_textDecoder = new TextDecoder('utf8'));
181
+ return _textDecoder.decode(bytes);
182
+ }
183
+ throw new Error(
184
+ `Unexpected: received non-Uint8Array/ArrayBuffer (${bytes.constructor.name}) in a web platform.`,
185
+ );
186
+ }
187
+ throw new Error(`Unexpected: neither Buffer nor TextDecoder are available as globals.`);
188
+ }
189
+ /**
190
+ * Most browsers don't yet have async iterable support for ReadableStream,
191
+ * and Node has a very different way of reading bytes from its "ReadableStream".
192
+ *
193
+ * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1624185965
194
+ *
195
+ * We make extensive use of "any" here to avoid pulling in either "node" or "dom" types
196
+ * to library users' type scopes.
197
+ */
198
+ function readableStreamAsyncIterable(stream) {
199
+ if (stream[Symbol.asyncIterator]) {
200
+ return stream[Symbol.asyncIterator];
201
+ }
202
+ const reader = stream.getReader();
203
+ return {
204
+ next() {
205
+ return reader.read();
206
+ },
207
+ async return() {
208
+ reader.releaseLock();
209
+ return { done: true, value: undefined };
210
+ },
211
+ [Symbol.asyncIterator]() {
212
+ return this;
213
+ },
214
+ };
215
+ }
216
+ //# sourceMappingURL=streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { createResponseHeaders } from './core.js';
2
- import { safeJSON } from './core.js';
3
- import { APIError } from './error.js';
1
+ import { createResponseHeaders } from './core.mjs';
2
+ import { safeJSON } from '@anthropic-ai/sdk/core';
3
+ import { APIError } from '@anthropic-ai/sdk/error';
4
4
  class SSEDecoder {
5
5
  constructor() {
6
6
  this.event = null;
@@ -53,15 +53,9 @@ export class Stream {
53
53
  throw new Error(`Attempted to iterate over a response with no body`);
54
54
  }
55
55
  const lineDecoder = new LineDecoder();
56
- for await (const chunk of this.response.body) {
57
- let text;
58
- if (chunk instanceof Buffer) {
59
- text = chunk.toString();
60
- } else if (chunk instanceof Uint8Array) {
61
- text = Buffer.from(chunk).toString();
62
- } else {
63
- text = chunk;
64
- }
56
+ const iter = readableStreamAsyncIterable(this.response.body);
57
+ for await (const chunk of iter) {
58
+ const text = decodeText(chunk);
65
59
  for (const line of lineDecoder.decode(text)) {
66
60
  const sse = this.decoder.decode(line);
67
61
  if (sse) yield sse;
@@ -160,4 +154,59 @@ function partition(str, delimiter) {
160
154
  }
161
155
  return [str, '', ''];
162
156
  }
163
- //# sourceMappingURL=streaming.js.map
157
+ let _textDecoder;
158
+ function decodeText(bytes) {
159
+ if (bytes == null) return '';
160
+ if (typeof bytes === 'string') return bytes;
161
+ // Node:
162
+ if (typeof Buffer !== 'undefined') {
163
+ if (bytes instanceof Buffer) {
164
+ return bytes.toString();
165
+ }
166
+ if (bytes instanceof Uint8Array) {
167
+ return Buffer.from(bytes).toString();
168
+ }
169
+ throw new Error(`Unexpected: received non-Uint8Array (${bytes.constructor.name}) in Node.`);
170
+ }
171
+ // Browser
172
+ if (typeof TextDecoder !== 'undefined') {
173
+ if (bytes instanceof Uint8Array || bytes instanceof ArrayBuffer) {
174
+ _textDecoder !== null && _textDecoder !== void 0 ?
175
+ _textDecoder
176
+ : (_textDecoder = new TextDecoder('utf8'));
177
+ return _textDecoder.decode(bytes);
178
+ }
179
+ throw new Error(
180
+ `Unexpected: received non-Uint8Array/ArrayBuffer (${bytes.constructor.name}) in a web platform.`,
181
+ );
182
+ }
183
+ throw new Error(`Unexpected: neither Buffer nor TextDecoder are available as globals.`);
184
+ }
185
+ /**
186
+ * Most browsers don't yet have async iterable support for ReadableStream,
187
+ * and Node has a very different way of reading bytes from its "ReadableStream".
188
+ *
189
+ * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1624185965
190
+ *
191
+ * We make extensive use of "any" here to avoid pulling in either "node" or "dom" types
192
+ * to library users' type scopes.
193
+ */
194
+ function readableStreamAsyncIterable(stream) {
195
+ if (stream[Symbol.asyncIterator]) {
196
+ return stream[Symbol.asyncIterator];
197
+ }
198
+ const reader = stream.getReader();
199
+ return {
200
+ next() {
201
+ return reader.read();
202
+ },
203
+ async return() {
204
+ reader.releaseLock();
205
+ return { done: true, value: undefined };
206
+ },
207
+ [Symbol.asyncIterator]() {
208
+ return this;
209
+ },
210
+ };
211
+ }
212
+ //# sourceMappingURL=streaming.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.mjs","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":"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"}
package/uploads.d.ts ADDED
@@ -0,0 +1,90 @@
1
+ import { type RequestOptions } from './core.js';
2
+ import { type Readable } from '@anthropic-ai/sdk/_shims/node-readable';
3
+ import { type BodyInit } from '@anthropic-ai/sdk/_shims/fetch';
4
+ import { FormData, type FilePropertyBag } from '@anthropic-ai/sdk/_shims/formdata';
5
+ import { fileFromPath } from '@anthropic-ai/sdk/_shims/fileFromPath';
6
+ import { type FsReadStream } from '@anthropic-ai/sdk/_shims/node-readable';
7
+ export { fileFromPath };
8
+ export type BlobPart = string | ArrayBuffer | ArrayBufferView | BlobLike | Uint8Array | DataView;
9
+ /**
10
+ * Typically, this is a native "File" class.
11
+ *
12
+ * We provide the {@link toFile} utility to convert a variety of objects
13
+ * into the File class.
14
+ *
15
+ * For convenience, you can also pass a fetch Response, or in Node,
16
+ * the result of fs.createReadStream().
17
+ */
18
+ export type Uploadable = FileLike | ResponseLike | FsReadStream;
19
+ /**
20
+ * Intended to match web.Blob, node.Blob, node-fetch.Blob, etc.
21
+ */
22
+ export interface BlobLike {
23
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) */
24
+ readonly size: number;
25
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) */
26
+ readonly type: string;
27
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) */
28
+ text(): Promise<string>;
29
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */
30
+ slice(start?: number, end?: number): BlobLike;
31
+ }
32
+ /**
33
+ * Intended to match web.File, node.File, node-fetch.File, etc.
34
+ */
35
+ export interface FileLike extends BlobLike {
36
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) */
37
+ readonly lastModified: number;
38
+ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) */
39
+ readonly name: string;
40
+ }
41
+ /**
42
+ * Intended to match web.Response, node.Response, node-fetch.Response, etc.
43
+ */
44
+ export interface ResponseLike {
45
+ url: string;
46
+ blob(): Promise<BlobLike>;
47
+ }
48
+ export declare const isResponseLike: (value: any) => value is ResponseLike;
49
+ export declare const isFileLike: (value: any) => value is FileLike;
50
+ /**
51
+ * The BlobLike type omits arrayBuffer() because @types/node-fetch@^2.6.4 lacks it; but this check
52
+ * adds the arrayBuffer() method type because it is available and used at runtime
53
+ */
54
+ export declare const isBlobLike: (value: any) => value is BlobLike & {
55
+ arrayBuffer(): Promise<ArrayBuffer>;
56
+ };
57
+ export declare const isUploadable: (value: any) => value is Uploadable;
58
+ export type ToFileInput = Uploadable | Exclude<BlobPart, string> | AsyncIterable<BlobPart>;
59
+ /**
60
+ * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats
61
+ * @param bits the raw content of the file. Can be an {@link Uploadable}, {@link BlobPart}, or {@link AsyncIterable} of {@link BlobPart}s
62
+ * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible
63
+ * @param {Object=} options additional properties
64
+ * @param {string=} options.type the MIME type of the content
65
+ * @param {number=} options.lastModified the last modified timestamp
66
+ * @returns a {@link File} with the given properties
67
+ */
68
+ export declare function toFile(
69
+ value: ToFileInput,
70
+ name?: string | null | undefined,
71
+ options?: FilePropertyBag | undefined,
72
+ ): Promise<FileLike>;
73
+ export declare class MultipartBody {
74
+ body: Readable | BodyInit;
75
+ constructor(body: Readable | BodyInit);
76
+ get [Symbol.toStringTag](): string;
77
+ }
78
+ export declare const isMultipartBody: (body: any) => body is MultipartBody;
79
+ /**
80
+ * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.
81
+ * Otherwise returns the request as is.
82
+ */
83
+ export declare const maybeMultipartFormRequestOptions: <T extends {} = Record<string, unknown>>(
84
+ opts: RequestOptions<T>,
85
+ ) => Promise<RequestOptions<MultipartBody | T>>;
86
+ export declare const multipartFormRequestOptions: <T extends {} = Record<string, unknown>>(
87
+ opts: RequestOptions<T>,
88
+ ) => Promise<RequestOptions<MultipartBody | T>>;
89
+ export declare const createForm: <T = Record<string, unknown>>(body: T | undefined) => Promise<FormData>;
90
+ //# sourceMappingURL=uploads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["src/uploads.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAQ,KAAK,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,wCAAwC,CAAC;AAE3F,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjG;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,6EAA6E;IAC7E,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAE/C;AAED;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,oFAAoF;IACpF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,UAAW,GAAG,0BAIP,CAAC;AAEnC,eAAO,MAAM,UAAU,UAAW,GAAG,sBAKlB,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,UAAU,UAAW,GAAG;mBAAwC,QAAQ,WAAW,CAAC;CAOxD,CAAC;AAE1C,eAAO,MAAM,YAAY,UAAW,GAAG,wBAEtC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAE3F;;;;;;;;GAQG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,GAAE,eAAe,GAAG,SAAc,GACxC,OAAO,CAAC,QAAQ,CAAC,CAoBnB;AAsDD,qBAAa,aAAa;IACL,IAAI,EAAE,QAAQ,GAAG,QAAQ;gBAAzB,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAC5C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;CACF;AAED,eAAO,MAAM,eAAe,SAAU,GAAG,0BACsD,CAAC;AAEhG;;;GAGG;AACH,eAAO,MAAM,gCAAgC,iHAO5C,CAAC;AAEF,eAAO,MAAM,2BAA2B,iHAKvC,CAAC;AAEF,eAAO,MAAM,UAAU,wDAA6D,QAAQ,QAAQ,CAInG,CAAC"}
package/uploads.js ADDED
@@ -0,0 +1,207 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.createForm =
4
+ exports.multipartFormRequestOptions =
5
+ exports.maybeMultipartFormRequestOptions =
6
+ exports.isMultipartBody =
7
+ exports.MultipartBody =
8
+ exports.toFile =
9
+ exports.isUploadable =
10
+ exports.isBlobLike =
11
+ exports.isFileLike =
12
+ exports.isResponseLike =
13
+ exports.fileFromPath =
14
+ void 0;
15
+ const formdata_1 = require('@anthropic-ai/sdk/_shims/formdata');
16
+ const getMultipartRequestOptions_1 = require('@anthropic-ai/sdk/_shims/getMultipartRequestOptions');
17
+ const fileFromPath_1 = require('@anthropic-ai/sdk/_shims/fileFromPath');
18
+ Object.defineProperty(exports, 'fileFromPath', {
19
+ enumerable: true,
20
+ get: function () {
21
+ return fileFromPath_1.fileFromPath;
22
+ },
23
+ });
24
+ const node_readable_1 = require('@anthropic-ai/sdk/_shims/node-readable');
25
+ const isResponseLike = (value) =>
26
+ value != null &&
27
+ typeof value === 'object' &&
28
+ typeof value.url === 'string' &&
29
+ typeof value.blob === 'function';
30
+ exports.isResponseLike = isResponseLike;
31
+ const isFileLike = (value) =>
32
+ value != null &&
33
+ typeof value === 'object' &&
34
+ typeof value.name === 'string' &&
35
+ typeof value.lastModified === 'number' &&
36
+ (0, exports.isBlobLike)(value);
37
+ exports.isFileLike = isFileLike;
38
+ /**
39
+ * The BlobLike type omits arrayBuffer() because @types/node-fetch@^2.6.4 lacks it; but this check
40
+ * adds the arrayBuffer() method type because it is available and used at runtime
41
+ */
42
+ const isBlobLike = (value) =>
43
+ value != null &&
44
+ typeof value === 'object' &&
45
+ typeof value.size === 'number' &&
46
+ typeof value.type === 'string' &&
47
+ typeof value.text === 'function' &&
48
+ typeof value.slice === 'function' &&
49
+ typeof value.arrayBuffer === 'function';
50
+ exports.isBlobLike = isBlobLike;
51
+ const isUploadable = (value) => {
52
+ return (
53
+ (0, exports.isFileLike)(value) ||
54
+ (0, exports.isResponseLike)(value) ||
55
+ (0, node_readable_1.isFsReadStream)(value)
56
+ );
57
+ };
58
+ exports.isUploadable = isUploadable;
59
+ /**
60
+ * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats
61
+ * @param bits the raw content of the file. Can be an {@link Uploadable}, {@link BlobPart}, or {@link AsyncIterable} of {@link BlobPart}s
62
+ * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible
63
+ * @param {Object=} options additional properties
64
+ * @param {string=} options.type the MIME type of the content
65
+ * @param {number=} options.lastModified the last modified timestamp
66
+ * @returns a {@link File} with the given properties
67
+ */
68
+ async function toFile(value, name, options = {}) {
69
+ var _a, _b, _c;
70
+ if ((0, exports.isResponseLike)(value)) {
71
+ const blob = await value.blob();
72
+ name ||
73
+ (name =
74
+ (_a = new URL(value.url).pathname.split(/[\\/]/).pop()) !== null && _a !== void 0 ?
75
+ _a
76
+ : 'unknown_file');
77
+ return new formdata_1.File([blob], name, options);
78
+ }
79
+ const bits = await getBytes(value);
80
+ name || (name = (_b = getName(value)) !== null && _b !== void 0 ? _b : 'unknown_file');
81
+ if (!options.type) {
82
+ const type = (_c = bits[0]) === null || _c === void 0 ? void 0 : _c.type;
83
+ if (typeof type === 'string') {
84
+ options = { ...options, type };
85
+ }
86
+ }
87
+ return new formdata_1.File(bits, name, options);
88
+ }
89
+ exports.toFile = toFile;
90
+ async function getBytes(value) {
91
+ var _a;
92
+ if (value instanceof Promise) return getBytes(await value);
93
+ let parts = [];
94
+ if (
95
+ typeof value === 'string' ||
96
+ ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.
97
+ value instanceof ArrayBuffer
98
+ ) {
99
+ parts.push(value);
100
+ } else if ((0, exports.isBlobLike)(value)) {
101
+ parts.push(await value.arrayBuffer());
102
+ } else if (
103
+ isAsyncIterableIterator(value) // includes Readable, ReadableStream, etc.
104
+ ) {
105
+ for await (const chunk of value) {
106
+ parts.push(chunk); // TODO, consider validating?
107
+ }
108
+ } else {
109
+ throw new Error(
110
+ `Unexpected data type: ${typeof value}; constructor: ${
111
+ (_a = value === null || value === void 0 ? void 0 : value.constructor) === null || _a === void 0 ?
112
+ void 0
113
+ : _a.name
114
+ }; props: ${propsForError(value)}`,
115
+ );
116
+ }
117
+ return parts;
118
+ }
119
+ function propsForError(value) {
120
+ const props = Object.getOwnPropertyNames(value);
121
+ return `[${props.map((p) => `"${p}"`).join(', ')}]`;
122
+ }
123
+ function getName(value) {
124
+ var _a;
125
+ return (
126
+ getStringFromMaybeBuffer(value.name) ||
127
+ getStringFromMaybeBuffer(value.filename) ||
128
+ // For fs.ReadStream
129
+ ((_a = getStringFromMaybeBuffer(value.path)) === null || _a === void 0 ? void 0 : _a.split(/[\\/]/).pop())
130
+ );
131
+ }
132
+ const getStringFromMaybeBuffer = (x) => {
133
+ if (typeof x === 'string') return x;
134
+ if (typeof Buffer !== 'undefined' && x instanceof Buffer) return String(x);
135
+ return undefined;
136
+ };
137
+ const isAsyncIterableIterator = (value) =>
138
+ value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';
139
+ class MultipartBody {
140
+ constructor(body) {
141
+ this.body = body;
142
+ }
143
+ get [Symbol.toStringTag]() {
144
+ return 'MultipartBody';
145
+ }
146
+ }
147
+ exports.MultipartBody = MultipartBody;
148
+ const isMultipartBody = (body) =>
149
+ body && typeof body === 'object' && body.body && body[Symbol.toStringTag] === 'MultipartBody';
150
+ exports.isMultipartBody = isMultipartBody;
151
+ /**
152
+ * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.
153
+ * Otherwise returns the request as is.
154
+ */
155
+ const maybeMultipartFormRequestOptions = async (opts) => {
156
+ if (!hasUploadableValue(opts.body)) return opts;
157
+ const form = await (0, exports.createForm)(opts.body);
158
+ return (0, getMultipartRequestOptions_1.getMultipartRequestOptions)(form, opts);
159
+ };
160
+ exports.maybeMultipartFormRequestOptions = maybeMultipartFormRequestOptions;
161
+ const multipartFormRequestOptions = async (opts) => {
162
+ const form = await (0, exports.createForm)(opts.body);
163
+ return (0, getMultipartRequestOptions_1.getMultipartRequestOptions)(form, opts);
164
+ };
165
+ exports.multipartFormRequestOptions = multipartFormRequestOptions;
166
+ const createForm = async (body) => {
167
+ const form = new formdata_1.FormData();
168
+ await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));
169
+ return form;
170
+ };
171
+ exports.createForm = createForm;
172
+ const hasUploadableValue = (value) => {
173
+ if ((0, exports.isUploadable)(value)) return true;
174
+ if (Array.isArray(value)) return value.some(hasUploadableValue);
175
+ if (value && typeof value === 'object') {
176
+ for (const k in value) {
177
+ if (hasUploadableValue(value[k])) return true;
178
+ }
179
+ }
180
+ return false;
181
+ };
182
+ const addFormValue = async (form, key, value) => {
183
+ if (value === undefined) return;
184
+ if (value == null) {
185
+ throw new TypeError(
186
+ `Received null for "${key}"; to pass null in FormData, you must use the string 'null'`,
187
+ );
188
+ }
189
+ // TODO: make nested formats configurable
190
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
191
+ form.append(key, value);
192
+ } else if ((0, exports.isUploadable)(value)) {
193
+ const file = await toFile(value);
194
+ form.append(key, file);
195
+ } else if (Array.isArray(value)) {
196
+ await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));
197
+ } else if (typeof value === 'object') {
198
+ await Promise.all(
199
+ Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)),
200
+ );
201
+ } else {
202
+ throw new TypeError(
203
+ `Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`,
204
+ );
205
+ }
206
+ };
207
+ //# sourceMappingURL=uploads.js.map
package/uploads.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.js","sourceRoot":"","sources":["src/uploads.ts"],"names":[],"mappings":";;;AAGA,gEAAyF;AACzF,oGAAiG;AACjG,wEAAqE;AAG5D,6FAHA,2BAAY,OAGA;AAFrB,0EAA2F;AAkDpF,MAAM,cAAc,GAAG,CAAC,KAAU,EAAyB,EAAE,CAClE,KAAK,IAAI,IAAI;IACb,OAAO,KAAK,KAAK,QAAQ;IACzB,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;IAC7B,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;AAJtB,QAAA,cAAc,kBAIQ;AAE5B,MAAM,UAAU,GAAG,CAAC,KAAU,EAAqB,EAAE,CAC1D,KAAK,IAAI,IAAI;IACb,OAAO,KAAK,KAAK,QAAQ;IACzB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;IAC9B,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;IACtC,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC;AALP,QAAA,UAAU,cAKH;AAEpB;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,KAAU,EAA+D,EAAE,CACpG,KAAK,IAAI,IAAI;IACb,OAAO,KAAK,KAAK,QAAQ;IACzB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;IAC9B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;IAC9B,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;IAChC,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;IACjC,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU,CAAC;AAP7B,QAAA,UAAU,cAOmB;AAEnC,MAAM,YAAY,GAAG,CAAC,KAAU,EAAuB,EAAE;IAC9D,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,IAAI,IAAA,sBAAc,EAAC,KAAK,CAAC,IAAI,IAAA,8BAAc,EAAC,KAAK,CAAC,CAAC;AAC7E,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAIF;;;;;;;;GAQG;AACI,KAAK,UAAU,MAAM,CAC1B,KAAkB,EAClB,IAAgC,EAChC,UAAuC,EAAE;;IAEzC,IAAI,IAAA,sBAAc,EAAC,KAAK,CAAC,EAAE;QACzB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,KAAJ,IAAI,GAAK,MAAA,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,mCAAI,cAAc,EAAC;QAE5E,OAAO,IAAI,eAAI,CAAC,CAAC,IAAW,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KAC/C;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEnC,IAAI,KAAJ,IAAI,GAAK,MAAA,OAAO,CAAC,KAAK,CAAC,mCAAI,cAAc,EAAC;IAE1C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,MAAC,IAAI,CAAC,CAAC,CAAS,0CAAE,IAAI,CAAC;QACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;SAChC;KACF;IAED,OAAO,IAAI,eAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAxBD,wBAwBC;AAED,KAAK,UAAU,QAAQ,CAAC,KAAkB;;IACxC,IAAI,KAAK,YAAY,OAAO;QAAE,OAAO,QAAQ,CAAC,MAAO,KAAa,CAAC,CAAC;IAEpE,IAAI,KAAK,GAAoB,EAAE,CAAC;IAChC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,oCAAoC;QACjE,KAAK,YAAY,WAAW,EAC5B;QACA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnB;SAAM,IAAI,IAAA,kBAAU,EAAC,KAAK,CAAC,EAAE;QAC5B,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;KACvC;SAAM,IACL,uBAAuB,CAAC,KAAK,CAAC,CAAC,0CAA0C;MACzE;QACA,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,EAAE;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAiB,CAAC,CAAC,CAAC,6BAA6B;SAC7D;KACF;SAAM;QACL,MAAM,IAAI,KAAK,CACb,yBAAyB,OAAO,KAAK,kBACnC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,0CAAE,IACtB,YAAY,aAAa,CAAC,KAAK,CAAC,EAAE,CACnC,CAAC;KACH;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAU;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACtD,CAAC;AAED,SAAS,OAAO,CAAC,KAAU;;IACzB,OAAO,CACL,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC;QACpC,wBAAwB,CAAC,KAAK,CAAC,QAAQ,CAAC;;QACxC,oBAAoB;QACpB,MAAA,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,0CAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAA,CAC3D,CAAC;AACJ,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,CAA4B,EAAsB,EAAE;IACpF,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,YAAY,MAAM;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,KAAU,EAA2C,EAAE,CACtF,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,UAAU,CAAC;AAElG,MAAa,aAAa;IACxB,YAAmB,IAAyB;QAAzB,SAAI,GAAJ,IAAI,CAAqB;IAAG,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AALD,sCAKC;AAEM,MAAM,eAAe,GAAG,CAAC,IAAS,EAAyB,EAAE,CAClE,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,eAAe,CAAC;AADnF,QAAA,eAAe,mBACoE;AAEhG;;;GAGG;AACI,MAAM,gCAAgC,GAAG,KAAK,EACnD,IAAuB,EACqB,EAAE;IAC9C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,IAAI,GAAG,MAAM,IAAA,kBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,IAAA,uDAA0B,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC,CAAC;AAPW,QAAA,gCAAgC,oCAO3C;AAEK,MAAM,2BAA2B,GAAG,KAAK,EAC9C,IAAuB,EACqB,EAAE;IAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,kBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,IAAA,uDAA0B,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC,CAAC;AALW,QAAA,2BAA2B,+BAKtC;AAEK,MAAM,UAAU,GAAG,KAAK,EAA+B,IAAmB,EAAqB,EAAE;IACtG,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;IAC5B,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpG,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,UAAU,cAIrB;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAAW,EAAE;IACrD,IAAI,IAAA,oBAAY,EAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACtC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,IAAI,kBAAkB,CAAE,KAAa,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;SACxD;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EAAE,IAAc,EAAE,GAAW,EAAE,KAAc,EAAiB,EAAE;IACxF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,MAAM,IAAI,SAAS,CACjB,sBAAsB,GAAG,6DAA6D,CACvF,CAAC;KACH;IAED,yCAAyC;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;QACxF,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACzB;SAAM,IAAI,IAAA,oBAAY,EAAC,KAAK,CAAC,EAAE;QAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACxB;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;KAChF;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACpC,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CACzF,CAAC;KACH;SAAM;QACL,MAAM,IAAI,SAAS,CACjB,wGAAwG,KAAK,UAAU,CACxH,CAAC;KACH;AACH,CAAC,CAAC"}