@functional-systems/lambdadb 0.4.3 → 0.5.0-rc.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 (378) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/FUNCTIONS.md +7 -2
  3. package/README.md +76 -4
  4. package/RUNTIMES.md +7 -0
  5. package/USAGE.md +20 -0
  6. package/dist/commonjs/client.d.ts +31 -14
  7. package/dist/commonjs/client.d.ts.map +1 -1
  8. package/dist/commonjs/client.js +188 -60
  9. package/dist/commonjs/client.js.map +1 -1
  10. package/dist/commonjs/compat/qdrant/client.d.ts +3 -6
  11. package/dist/commonjs/compat/qdrant/client.d.ts.map +1 -1
  12. package/dist/commonjs/compat/qdrant/client.js +17 -11
  13. package/dist/commonjs/compat/qdrant/client.js.map +1 -1
  14. package/dist/commonjs/funcs/collectionsCreate.d.ts +1 -1
  15. package/dist/commonjs/funcs/collectionsCreate.d.ts.map +1 -1
  16. package/dist/commonjs/funcs/collectionsCreate.js +1 -1
  17. package/dist/commonjs/funcs/collectionsCreate.js.map +1 -1
  18. package/dist/commonjs/funcs/collectionsDelete.d.ts +1 -1
  19. package/dist/commonjs/funcs/collectionsDelete.d.ts.map +1 -1
  20. package/dist/commonjs/funcs/collectionsDelete.js +1 -1
  21. package/dist/commonjs/funcs/collectionsDelete.js.map +1 -1
  22. package/dist/commonjs/funcs/collectionsDocsBulkUpsert.d.ts +1 -1
  23. package/dist/commonjs/funcs/collectionsDocsBulkUpsert.d.ts.map +1 -1
  24. package/dist/commonjs/funcs/collectionsDocsBulkUpsert.js +1 -1
  25. package/dist/commonjs/funcs/collectionsDocsBulkUpsert.js.map +1 -1
  26. package/dist/commonjs/funcs/collectionsDocsDelete.d.ts +2 -2
  27. package/dist/commonjs/funcs/collectionsDocsDelete.d.ts.map +1 -1
  28. package/dist/commonjs/funcs/collectionsDocsDelete.js +2 -2
  29. package/dist/commonjs/funcs/collectionsDocsDelete.js.map +1 -1
  30. package/dist/commonjs/funcs/collectionsDocsFetch.d.ts +1 -1
  31. package/dist/commonjs/funcs/collectionsDocsFetch.d.ts.map +1 -1
  32. package/dist/commonjs/funcs/collectionsDocsFetch.js +1 -1
  33. package/dist/commonjs/funcs/collectionsDocsFetch.js.map +1 -1
  34. package/dist/commonjs/funcs/collectionsDocsGetBulkUpsert.d.ts +1 -1
  35. package/dist/commonjs/funcs/collectionsDocsGetBulkUpsert.d.ts.map +1 -1
  36. package/dist/commonjs/funcs/collectionsDocsGetBulkUpsert.js +5 -1
  37. package/dist/commonjs/funcs/collectionsDocsGetBulkUpsert.js.map +1 -1
  38. package/dist/commonjs/funcs/collectionsDocsListDocs.d.ts +1 -1
  39. package/dist/commonjs/funcs/collectionsDocsListDocs.d.ts.map +1 -1
  40. package/dist/commonjs/funcs/collectionsDocsListDocs.js +3 -1
  41. package/dist/commonjs/funcs/collectionsDocsListDocs.js.map +1 -1
  42. package/dist/commonjs/funcs/collectionsDocsListDocsExtended.d.ts +1 -1
  43. package/dist/commonjs/funcs/collectionsDocsListDocsExtended.d.ts.map +1 -1
  44. package/dist/commonjs/funcs/collectionsDocsListDocsExtended.js +1 -1
  45. package/dist/commonjs/funcs/collectionsDocsListDocsExtended.js.map +1 -1
  46. package/dist/commonjs/funcs/collectionsDocsUpdate.d.ts +1 -1
  47. package/dist/commonjs/funcs/collectionsDocsUpdate.d.ts.map +1 -1
  48. package/dist/commonjs/funcs/collectionsDocsUpdate.js +1 -1
  49. package/dist/commonjs/funcs/collectionsDocsUpdate.js.map +1 -1
  50. package/dist/commonjs/funcs/collectionsDocsUpsert.d.ts +1 -1
  51. package/dist/commonjs/funcs/collectionsDocsUpsert.d.ts.map +1 -1
  52. package/dist/commonjs/funcs/collectionsDocsUpsert.js +1 -1
  53. package/dist/commonjs/funcs/collectionsDocsUpsert.js.map +1 -1
  54. package/dist/commonjs/funcs/collectionsGet.d.ts +1 -1
  55. package/dist/commonjs/funcs/collectionsGet.d.ts.map +1 -1
  56. package/dist/commonjs/funcs/collectionsGet.js +1 -1
  57. package/dist/commonjs/funcs/collectionsGet.js.map +1 -1
  58. package/dist/commonjs/funcs/collectionsList.d.ts +1 -1
  59. package/dist/commonjs/funcs/collectionsList.d.ts.map +1 -1
  60. package/dist/commonjs/funcs/collectionsList.js +1 -1
  61. package/dist/commonjs/funcs/collectionsList.js.map +1 -1
  62. package/dist/commonjs/funcs/collectionsQuery.d.ts +1 -1
  63. package/dist/commonjs/funcs/collectionsQuery.d.ts.map +1 -1
  64. package/dist/commonjs/funcs/collectionsQuery.js +1 -1
  65. package/dist/commonjs/funcs/collectionsQuery.js.map +1 -1
  66. package/dist/commonjs/funcs/collectionsUpdate.d.ts +1 -1
  67. package/dist/commonjs/funcs/collectionsUpdate.d.ts.map +1 -1
  68. package/dist/commonjs/funcs/collectionsUpdate.js +1 -1
  69. package/dist/commonjs/funcs/collectionsUpdate.js.map +1 -1
  70. package/dist/commonjs/index.d.ts +4 -1
  71. package/dist/commonjs/index.d.ts.map +1 -1
  72. package/dist/commonjs/index.js +15 -1
  73. package/dist/commonjs/index.js.map +1 -1
  74. package/dist/commonjs/lib/collectionContract.d.ts +4 -0
  75. package/dist/commonjs/lib/collectionContract.d.ts.map +1 -0
  76. package/dist/commonjs/lib/collectionContract.js +68 -0
  77. package/dist/commonjs/lib/collectionContract.js.map +1 -0
  78. package/dist/commonjs/lib/config.d.ts +2 -2
  79. package/dist/commonjs/lib/config.js +2 -2
  80. package/dist/commonjs/lib/config.js.map +1 -1
  81. package/dist/commonjs/lib/matchers.d.ts +3 -0
  82. package/dist/commonjs/lib/matchers.d.ts.map +1 -1
  83. package/dist/commonjs/lib/matchers.js +11 -0
  84. package/dist/commonjs/lib/matchers.js.map +1 -1
  85. package/dist/commonjs/lib/queryInput.d.ts +3 -11
  86. package/dist/commonjs/lib/queryInput.d.ts.map +1 -1
  87. package/dist/commonjs/lib/queryInput.js.map +1 -1
  88. package/dist/commonjs/models/collectionresponse.d.ts +16 -22
  89. package/dist/commonjs/models/collectionresponse.d.ts.map +1 -1
  90. package/dist/commonjs/models/collectionresponse.js +6 -7
  91. package/dist/commonjs/models/collectionresponse.js.map +1 -1
  92. package/dist/commonjs/models/errors/gatewayerrors.d.ts +47 -0
  93. package/dist/commonjs/models/errors/gatewayerrors.d.ts.map +1 -0
  94. package/dist/commonjs/models/errors/gatewayerrors.js +104 -0
  95. package/dist/commonjs/models/errors/gatewayerrors.js.map +1 -0
  96. package/dist/commonjs/models/errors/index.d.ts +1 -0
  97. package/dist/commonjs/models/errors/index.d.ts.map +1 -1
  98. package/dist/commonjs/models/errors/index.js +1 -0
  99. package/dist/commonjs/models/errors/index.js.map +1 -1
  100. package/dist/commonjs/models/errors/lambdadberror.d.ts +2 -0
  101. package/dist/commonjs/models/errors/lambdadberror.d.ts.map +1 -1
  102. package/dist/commonjs/models/errors/lambdadberror.js +4 -0
  103. package/dist/commonjs/models/errors/lambdadberror.js.map +1 -1
  104. package/dist/commonjs/models/index.d.ts +1 -0
  105. package/dist/commonjs/models/index.d.ts.map +1 -1
  106. package/dist/commonjs/models/index.js +1 -0
  107. package/dist/commonjs/models/index.js.map +1 -1
  108. package/dist/commonjs/models/operations/bulkupsertdocs.d.ts +6 -0
  109. package/dist/commonjs/models/operations/bulkupsertdocs.d.ts.map +1 -1
  110. package/dist/commonjs/models/operations/bulkupsertdocs.js +3 -1
  111. package/dist/commonjs/models/operations/bulkupsertdocs.js.map +1 -1
  112. package/dist/commonjs/models/operations/createcollection.d.ts +20 -13
  113. package/dist/commonjs/models/operations/createcollection.d.ts.map +1 -1
  114. package/dist/commonjs/models/operations/createcollection.js +15 -8
  115. package/dist/commonjs/models/operations/createcollection.js.map +1 -1
  116. package/dist/commonjs/models/operations/deletedocs.d.ts +26 -2
  117. package/dist/commonjs/models/operations/deletedocs.d.ts.map +1 -1
  118. package/dist/commonjs/models/operations/deletedocs.js +2 -1
  119. package/dist/commonjs/models/operations/deletedocs.js.map +1 -1
  120. package/dist/commonjs/models/operations/fetchdocs.d.ts +4 -1
  121. package/dist/commonjs/models/operations/fetchdocs.d.ts.map +1 -1
  122. package/dist/commonjs/models/operations/fetchdocs.js +9 -0
  123. package/dist/commonjs/models/operations/fetchdocs.js.map +1 -1
  124. package/dist/commonjs/models/operations/getbulkupsertdocs.d.ts +5 -0
  125. package/dist/commonjs/models/operations/getbulkupsertdocs.d.ts.map +1 -1
  126. package/dist/commonjs/models/operations/getbulkupsertdocs.js +5 -3
  127. package/dist/commonjs/models/operations/getbulkupsertdocs.js.map +1 -1
  128. package/dist/commonjs/models/operations/listdocs.d.ts +11 -2
  129. package/dist/commonjs/models/operations/listdocs.d.ts.map +1 -1
  130. package/dist/commonjs/models/operations/listdocs.js +12 -1
  131. package/dist/commonjs/models/operations/listdocs.js.map +1 -1
  132. package/dist/commonjs/models/operations/querycollection.d.ts +4 -1
  133. package/dist/commonjs/models/operations/querycollection.d.ts.map +1 -1
  134. package/dist/commonjs/models/operations/querycollection.js +9 -0
  135. package/dist/commonjs/models/operations/querycollection.js.map +1 -1
  136. package/dist/commonjs/models/operations/updatecollection.d.ts +33 -4
  137. package/dist/commonjs/models/operations/updatecollection.d.ts.map +1 -1
  138. package/dist/commonjs/models/operations/updatecollection.js +6 -2
  139. package/dist/commonjs/models/operations/updatecollection.js.map +1 -1
  140. package/dist/commonjs/models/operations/updatedocs.d.ts +3 -0
  141. package/dist/commonjs/models/operations/updatedocs.d.ts.map +1 -1
  142. package/dist/commonjs/models/operations/updatedocs.js +2 -1
  143. package/dist/commonjs/models/operations/updatedocs.js.map +1 -1
  144. package/dist/commonjs/models/operations/upsertdocs.d.ts +3 -0
  145. package/dist/commonjs/models/operations/upsertdocs.d.ts.map +1 -1
  146. package/dist/commonjs/models/operations/upsertdocs.js +2 -1
  147. package/dist/commonjs/models/operations/upsertdocs.js.map +1 -1
  148. package/dist/commonjs/models/versioning.d.ts +100 -0
  149. package/dist/commonjs/models/versioning.d.ts.map +1 -0
  150. package/dist/commonjs/models/versioning.js +93 -0
  151. package/dist/commonjs/models/versioning.js.map +1 -0
  152. package/dist/commonjs/sdk/docs.d.ts +1 -1
  153. package/dist/commonjs/sdk/docs.js +1 -1
  154. package/dist/commonjs/types/errors.d.ts +15 -13
  155. package/dist/commonjs/types/errors.d.ts.map +1 -1
  156. package/dist/commonjs/types/errors.js +6 -1
  157. package/dist/commonjs/types/errors.js.map +1 -1
  158. package/dist/commonjs/types/public.d.ts +80 -6
  159. package/dist/commonjs/types/public.d.ts.map +1 -1
  160. package/dist/commonjs/types/public.js +30 -7
  161. package/dist/commonjs/types/public.js.map +1 -1
  162. package/dist/commonjs/versioning.d.ts +63 -0
  163. package/dist/commonjs/versioning.d.ts.map +1 -0
  164. package/dist/commonjs/versioning.js +402 -0
  165. package/dist/commonjs/versioning.js.map +1 -0
  166. package/dist/esm/client.d.ts +31 -14
  167. package/dist/esm/client.d.ts.map +1 -1
  168. package/dist/esm/client.js +189 -62
  169. package/dist/esm/client.js.map +1 -1
  170. package/dist/esm/compat/qdrant/client.d.ts +3 -6
  171. package/dist/esm/compat/qdrant/client.d.ts.map +1 -1
  172. package/dist/esm/compat/qdrant/client.js +17 -11
  173. package/dist/esm/compat/qdrant/client.js.map +1 -1
  174. package/dist/esm/funcs/collectionsCreate.d.ts +1 -1
  175. package/dist/esm/funcs/collectionsCreate.d.ts.map +1 -1
  176. package/dist/esm/funcs/collectionsCreate.js +1 -1
  177. package/dist/esm/funcs/collectionsCreate.js.map +1 -1
  178. package/dist/esm/funcs/collectionsDelete.d.ts +1 -1
  179. package/dist/esm/funcs/collectionsDelete.d.ts.map +1 -1
  180. package/dist/esm/funcs/collectionsDelete.js +1 -1
  181. package/dist/esm/funcs/collectionsDelete.js.map +1 -1
  182. package/dist/esm/funcs/collectionsDocsBulkUpsert.d.ts +1 -1
  183. package/dist/esm/funcs/collectionsDocsBulkUpsert.d.ts.map +1 -1
  184. package/dist/esm/funcs/collectionsDocsBulkUpsert.js +1 -1
  185. package/dist/esm/funcs/collectionsDocsBulkUpsert.js.map +1 -1
  186. package/dist/esm/funcs/collectionsDocsDelete.d.ts +2 -2
  187. package/dist/esm/funcs/collectionsDocsDelete.d.ts.map +1 -1
  188. package/dist/esm/funcs/collectionsDocsDelete.js +2 -2
  189. package/dist/esm/funcs/collectionsDocsDelete.js.map +1 -1
  190. package/dist/esm/funcs/collectionsDocsFetch.d.ts +1 -1
  191. package/dist/esm/funcs/collectionsDocsFetch.d.ts.map +1 -1
  192. package/dist/esm/funcs/collectionsDocsFetch.js +1 -1
  193. package/dist/esm/funcs/collectionsDocsFetch.js.map +1 -1
  194. package/dist/esm/funcs/collectionsDocsGetBulkUpsert.d.ts +1 -1
  195. package/dist/esm/funcs/collectionsDocsGetBulkUpsert.d.ts.map +1 -1
  196. package/dist/esm/funcs/collectionsDocsGetBulkUpsert.js +6 -2
  197. package/dist/esm/funcs/collectionsDocsGetBulkUpsert.js.map +1 -1
  198. package/dist/esm/funcs/collectionsDocsListDocs.d.ts +1 -1
  199. package/dist/esm/funcs/collectionsDocsListDocs.d.ts.map +1 -1
  200. package/dist/esm/funcs/collectionsDocsListDocs.js +3 -1
  201. package/dist/esm/funcs/collectionsDocsListDocs.js.map +1 -1
  202. package/dist/esm/funcs/collectionsDocsListDocsExtended.d.ts +1 -1
  203. package/dist/esm/funcs/collectionsDocsListDocsExtended.d.ts.map +1 -1
  204. package/dist/esm/funcs/collectionsDocsListDocsExtended.js +1 -1
  205. package/dist/esm/funcs/collectionsDocsListDocsExtended.js.map +1 -1
  206. package/dist/esm/funcs/collectionsDocsUpdate.d.ts +1 -1
  207. package/dist/esm/funcs/collectionsDocsUpdate.d.ts.map +1 -1
  208. package/dist/esm/funcs/collectionsDocsUpdate.js +1 -1
  209. package/dist/esm/funcs/collectionsDocsUpdate.js.map +1 -1
  210. package/dist/esm/funcs/collectionsDocsUpsert.d.ts +1 -1
  211. package/dist/esm/funcs/collectionsDocsUpsert.d.ts.map +1 -1
  212. package/dist/esm/funcs/collectionsDocsUpsert.js +1 -1
  213. package/dist/esm/funcs/collectionsDocsUpsert.js.map +1 -1
  214. package/dist/esm/funcs/collectionsGet.d.ts +1 -1
  215. package/dist/esm/funcs/collectionsGet.d.ts.map +1 -1
  216. package/dist/esm/funcs/collectionsGet.js +1 -1
  217. package/dist/esm/funcs/collectionsGet.js.map +1 -1
  218. package/dist/esm/funcs/collectionsList.d.ts +1 -1
  219. package/dist/esm/funcs/collectionsList.d.ts.map +1 -1
  220. package/dist/esm/funcs/collectionsList.js +1 -1
  221. package/dist/esm/funcs/collectionsList.js.map +1 -1
  222. package/dist/esm/funcs/collectionsQuery.d.ts +1 -1
  223. package/dist/esm/funcs/collectionsQuery.d.ts.map +1 -1
  224. package/dist/esm/funcs/collectionsQuery.js +1 -1
  225. package/dist/esm/funcs/collectionsQuery.js.map +1 -1
  226. package/dist/esm/funcs/collectionsUpdate.d.ts +1 -1
  227. package/dist/esm/funcs/collectionsUpdate.d.ts.map +1 -1
  228. package/dist/esm/funcs/collectionsUpdate.js +1 -1
  229. package/dist/esm/funcs/collectionsUpdate.js.map +1 -1
  230. package/dist/esm/index.d.ts +4 -1
  231. package/dist/esm/index.d.ts.map +1 -1
  232. package/dist/esm/index.js +3 -1
  233. package/dist/esm/index.js.map +1 -1
  234. package/dist/esm/lib/collectionContract.d.ts +4 -0
  235. package/dist/esm/lib/collectionContract.d.ts.map +1 -0
  236. package/dist/esm/lib/collectionContract.js +32 -0
  237. package/dist/esm/lib/collectionContract.js.map +1 -0
  238. package/dist/esm/lib/config.d.ts +2 -2
  239. package/dist/esm/lib/config.js +2 -2
  240. package/dist/esm/lib/config.js.map +1 -1
  241. package/dist/esm/lib/matchers.d.ts +3 -0
  242. package/dist/esm/lib/matchers.d.ts.map +1 -1
  243. package/dist/esm/lib/matchers.js +10 -0
  244. package/dist/esm/lib/matchers.js.map +1 -1
  245. package/dist/esm/lib/queryInput.d.ts +3 -11
  246. package/dist/esm/lib/queryInput.d.ts.map +1 -1
  247. package/dist/esm/lib/queryInput.js.map +1 -1
  248. package/dist/esm/models/collectionresponse.d.ts +16 -22
  249. package/dist/esm/models/collectionresponse.d.ts.map +1 -1
  250. package/dist/esm/models/collectionresponse.js +6 -7
  251. package/dist/esm/models/collectionresponse.js.map +1 -1
  252. package/dist/esm/models/errors/gatewayerrors.d.ts +47 -0
  253. package/dist/esm/models/errors/gatewayerrors.d.ts.map +1 -0
  254. package/dist/esm/models/errors/gatewayerrors.js +63 -0
  255. package/dist/esm/models/errors/gatewayerrors.js.map +1 -0
  256. package/dist/esm/models/errors/index.d.ts +1 -0
  257. package/dist/esm/models/errors/index.d.ts.map +1 -1
  258. package/dist/esm/models/errors/index.js +1 -0
  259. package/dist/esm/models/errors/index.js.map +1 -1
  260. package/dist/esm/models/errors/lambdadberror.d.ts +2 -0
  261. package/dist/esm/models/errors/lambdadberror.d.ts.map +1 -1
  262. package/dist/esm/models/errors/lambdadberror.js +4 -0
  263. package/dist/esm/models/errors/lambdadberror.js.map +1 -1
  264. package/dist/esm/models/index.d.ts +1 -0
  265. package/dist/esm/models/index.d.ts.map +1 -1
  266. package/dist/esm/models/index.js +1 -0
  267. package/dist/esm/models/index.js.map +1 -1
  268. package/dist/esm/models/operations/bulkupsertdocs.d.ts +6 -0
  269. package/dist/esm/models/operations/bulkupsertdocs.d.ts.map +1 -1
  270. package/dist/esm/models/operations/bulkupsertdocs.js +3 -1
  271. package/dist/esm/models/operations/bulkupsertdocs.js.map +1 -1
  272. package/dist/esm/models/operations/createcollection.d.ts +20 -13
  273. package/dist/esm/models/operations/createcollection.d.ts.map +1 -1
  274. package/dist/esm/models/operations/createcollection.js +15 -8
  275. package/dist/esm/models/operations/createcollection.js.map +1 -1
  276. package/dist/esm/models/operations/deletedocs.d.ts +26 -2
  277. package/dist/esm/models/operations/deletedocs.d.ts.map +1 -1
  278. package/dist/esm/models/operations/deletedocs.js +2 -1
  279. package/dist/esm/models/operations/deletedocs.js.map +1 -1
  280. package/dist/esm/models/operations/fetchdocs.d.ts +4 -1
  281. package/dist/esm/models/operations/fetchdocs.d.ts.map +1 -1
  282. package/dist/esm/models/operations/fetchdocs.js +9 -0
  283. package/dist/esm/models/operations/fetchdocs.js.map +1 -1
  284. package/dist/esm/models/operations/getbulkupsertdocs.d.ts +5 -0
  285. package/dist/esm/models/operations/getbulkupsertdocs.d.ts.map +1 -1
  286. package/dist/esm/models/operations/getbulkupsertdocs.js +6 -4
  287. package/dist/esm/models/operations/getbulkupsertdocs.js.map +1 -1
  288. package/dist/esm/models/operations/listdocs.d.ts +11 -2
  289. package/dist/esm/models/operations/listdocs.d.ts.map +1 -1
  290. package/dist/esm/models/operations/listdocs.js +12 -1
  291. package/dist/esm/models/operations/listdocs.js.map +1 -1
  292. package/dist/esm/models/operations/querycollection.d.ts +4 -1
  293. package/dist/esm/models/operations/querycollection.d.ts.map +1 -1
  294. package/dist/esm/models/operations/querycollection.js +9 -0
  295. package/dist/esm/models/operations/querycollection.js.map +1 -1
  296. package/dist/esm/models/operations/updatecollection.d.ts +33 -4
  297. package/dist/esm/models/operations/updatecollection.d.ts.map +1 -1
  298. package/dist/esm/models/operations/updatecollection.js +6 -2
  299. package/dist/esm/models/operations/updatecollection.js.map +1 -1
  300. package/dist/esm/models/operations/updatedocs.d.ts +3 -0
  301. package/dist/esm/models/operations/updatedocs.d.ts.map +1 -1
  302. package/dist/esm/models/operations/updatedocs.js +2 -1
  303. package/dist/esm/models/operations/updatedocs.js.map +1 -1
  304. package/dist/esm/models/operations/upsertdocs.d.ts +3 -0
  305. package/dist/esm/models/operations/upsertdocs.d.ts.map +1 -1
  306. package/dist/esm/models/operations/upsertdocs.js +2 -1
  307. package/dist/esm/models/operations/upsertdocs.js.map +1 -1
  308. package/dist/esm/models/versioning.d.ts +100 -0
  309. package/dist/esm/models/versioning.d.ts.map +1 -0
  310. package/dist/esm/models/versioning.js +57 -0
  311. package/dist/esm/models/versioning.js.map +1 -0
  312. package/dist/esm/sdk/docs.d.ts +1 -1
  313. package/dist/esm/sdk/docs.js +1 -1
  314. package/dist/esm/types/errors.d.ts +15 -13
  315. package/dist/esm/types/errors.d.ts.map +1 -1
  316. package/dist/esm/types/errors.js +1 -1
  317. package/dist/esm/types/errors.js.map +1 -1
  318. package/dist/esm/types/public.d.ts +80 -6
  319. package/dist/esm/types/public.d.ts.map +1 -1
  320. package/dist/esm/types/public.js +26 -7
  321. package/dist/esm/types/public.js.map +1 -1
  322. package/dist/esm/versioning.d.ts +63 -0
  323. package/dist/esm/versioning.d.ts.map +1 -0
  324. package/dist/esm/versioning.js +356 -0
  325. package/dist/esm/versioning.js.map +1 -0
  326. package/jsr.json +3 -1
  327. package/package.json +14 -2
  328. package/src/client.ts +306 -65
  329. package/src/compat/qdrant/client.ts +28 -16
  330. package/src/funcs/collectionsCreate.ts +14 -1
  331. package/src/funcs/collectionsDelete.ts +18 -1
  332. package/src/funcs/collectionsDocsBulkUpsert.ts +13 -0
  333. package/src/funcs/collectionsDocsDelete.ts +14 -1
  334. package/src/funcs/collectionsDocsFetch.ts +13 -0
  335. package/src/funcs/collectionsDocsGetBulkUpsert.ts +19 -1
  336. package/src/funcs/collectionsDocsListDocs.ts +15 -0
  337. package/src/funcs/collectionsDocsListDocsExtended.ts +13 -0
  338. package/src/funcs/collectionsDocsUpdate.ts +13 -0
  339. package/src/funcs/collectionsDocsUpsert.ts +13 -0
  340. package/src/funcs/collectionsGet.ts +13 -0
  341. package/src/funcs/collectionsList.ts +13 -0
  342. package/src/funcs/collectionsQuery.ts +13 -0
  343. package/src/funcs/collectionsUpdate.ts +17 -0
  344. package/src/index.ts +17 -0
  345. package/src/lib/collectionContract.ts +42 -0
  346. package/src/lib/config.ts +2 -2
  347. package/src/lib/matchers.ts +27 -0
  348. package/src/lib/queryInput.ts +3 -10
  349. package/src/models/collectionresponse.ts +25 -28
  350. package/src/models/errors/gatewayerrors.ts +104 -0
  351. package/src/models/errors/index.ts +1 -0
  352. package/src/models/errors/lambdadberror.ts +5 -0
  353. package/src/models/index.ts +1 -0
  354. package/src/models/operations/bulkupsertdocs.ts +9 -1
  355. package/src/models/operations/createcollection.ts +37 -19
  356. package/src/models/operations/deletedocs.ts +36 -3
  357. package/src/models/operations/fetchdocs.ts +13 -1
  358. package/src/models/operations/getbulkupsertdocs.ts +11 -4
  359. package/src/models/operations/listdocs.ts +23 -3
  360. package/src/models/operations/querycollection.ts +13 -1
  361. package/src/models/operations/updatecollection.ts +45 -6
  362. package/src/models/operations/updatedocs.ts +5 -1
  363. package/src/models/operations/upsertdocs.ts +5 -1
  364. package/src/models/versioning.ts +118 -0
  365. package/src/sdk/docs.ts +1 -1
  366. package/src/types/errors.ts +32 -13
  367. package/src/types/public.ts +127 -14
  368. package/src/versioning.ts +509 -0
  369. package/examples/collectionScoped.example.ts +0 -38
  370. package/examples/collectionsList.example.ts +0 -25
  371. package/examples/package-lock.json +0 -612
  372. package/examples/package.json +0 -18
  373. package/test/integration/qdrant-compat-external.test.mjs +0 -351
  374. package/test/integration/qdrant-compat-live.test.mjs +0 -122
  375. package/test/null-response.test.mjs +0 -73
  376. package/test/public-api.test.mjs +0 -540
  377. package/test/qdrant-compat.test.mjs +0 -547
  378. package/tsconfig.json +0 -39
package/src/client.ts CHANGED
@@ -12,6 +12,12 @@
12
12
 
13
13
  import { LambdaDBCore } from "./core.js";
14
14
  import type { SDKOptions } from "./lib/config.js";
15
+ import {
16
+ HTTPClient,
17
+ isAbortError,
18
+ isConnectionError,
19
+ isTimeoutError,
20
+ } from "./lib/http.js";
15
21
  import { collectionsCreate } from "./funcs/collectionsCreate.js";
16
22
  import { collectionsDelete } from "./funcs/collectionsDelete.js";
17
23
  import { collectionsGet } from "./funcs/collectionsGet.js";
@@ -27,14 +33,26 @@ import { collectionsDocsListDocsExtended } from "./funcs/collectionsDocsListDocs
27
33
  import { collectionsDocsUpdate } from "./funcs/collectionsDocsUpdate.js";
28
34
  import { collectionsDocsUpsert } from "./funcs/collectionsDocsUpsert.js";
29
35
  import type { RequestOptions } from "./lib/sdks.js";
30
- import { UnexpectedClientError } from "./models/errors/httpclienterrors.js";
36
+ import {
37
+ ConnectionError,
38
+ RequestAbortedError,
39
+ RequestTimeoutError,
40
+ UnexpectedClientError,
41
+ } from "./models/errors/httpclienterrors.js";
42
+ import {
43
+ CollectionAliases,
44
+ CollectionBranches,
45
+ CollectionTags,
46
+ } from "./versioning.js";
31
47
  import { unwrapAsync, OK, ERR } from "./types/fp.js";
32
48
  import type { Result } from "./types/fp.js";
33
49
  import type * as operations from "./models/operations/index.js";
34
50
  import type * as models from "./models/index.js";
35
51
  import {
36
52
  listCollectionsResponseWithDates,
53
+ createCollectionResponseWithDates,
37
54
  getCollectionResponseWithDates,
55
+ updateCollectionResponseWithDates,
38
56
  type CreateCollectionInput,
39
57
  type UpdateCollectionInput,
40
58
  type QueryCollectionInput,
@@ -46,17 +64,18 @@ import {
46
64
  type ListCollectionsInput,
47
65
  type ListCollectionsResponseWithDates,
48
66
  type GetCollectionResponseWithDates,
49
- UpsertDocsInput,
50
- UpdateDocsInput,
51
- DeleteDocsInput,
52
- FetchDocsInput,
53
- FetchDocsResponse,
54
- FetchDocsDoc,
55
- BulkUpsertInput,
56
- MessageResponse,
57
- CreateCollectionResponse,
58
- UpdateCollectionResponse,
59
- GetBulkUpsertDocsResponse,
67
+ type CreateCollectionResponseWithDates,
68
+ type UpdateCollectionResponseWithDates,
69
+ type GetBulkUpsertInput,
70
+ type UpsertDocsInput,
71
+ type UpdateDocsInput,
72
+ type DeleteDocsInput,
73
+ type FetchDocsInput,
74
+ type FetchDocsResponse,
75
+ type FetchDocsDoc,
76
+ type BulkUpsertInput,
77
+ type MessageResponse,
78
+ type GetBulkUpsertDocsResponse,
60
79
  } from "./types/public.js";
61
80
  import type {
62
81
  ListCollectionsError,
@@ -87,15 +106,95 @@ export type { operations, models };
87
106
  /**
88
107
  * Fetches documents from a presigned docsUrl. Response must be { docs: [...] }.
89
108
  */
90
- async function fetchDocsFromUrl<T>(docsUrl: string): Promise<T[]> {
91
- const res = await fetch(docsUrl);
109
+ function transferSignal(options?: RequestOptions): AbortSignal | undefined {
110
+ const signal = options?.signal ?? options?.fetchOptions?.signal;
111
+ if (signal != null) return signal;
112
+ if (options?.timeoutMs != null && options.timeoutMs > 0) {
113
+ return AbortSignal.timeout(options.timeoutMs);
114
+ }
115
+ return undefined;
116
+ }
117
+
118
+ function withTransferSignal(
119
+ init: RequestInit,
120
+ options?: RequestOptions,
121
+ ): RequestInit {
122
+ const signal = transferSignal(options);
123
+ return signal === undefined ? init : { ...init, signal };
124
+ }
125
+
126
+ function serializeBulkUpsertPayload(
127
+ docs: UpsertDocsInput["docs"],
128
+ ): { jsonString: string; sizeBytes: number } {
129
+ try {
130
+ const jsonString = JSON.stringify({ docs });
131
+ if (jsonString === undefined) {
132
+ throw new TypeError("JSON.stringify returned undefined");
133
+ }
134
+ return {
135
+ jsonString,
136
+ sizeBytes: new TextEncoder().encode(jsonString).length,
137
+ };
138
+ } catch (cause) {
139
+ throw new UnexpectedClientError(
140
+ "Failed to serialize bulk upsert payload",
141
+ { cause },
142
+ );
143
+ }
144
+ }
145
+
146
+ function classifyTransferError(
147
+ message: string,
148
+ cause: unknown,
149
+ ): ConnectionError | RequestAbortedError | RequestTimeoutError | UnexpectedClientError {
150
+ if (isAbortError(cause)) {
151
+ return new RequestAbortedError("Request aborted by client", { cause });
152
+ }
153
+ if (isTimeoutError(cause)) {
154
+ return new RequestTimeoutError("Request timed out", { cause });
155
+ }
156
+ if (isConnectionError(cause)) {
157
+ return new ConnectionError("Unable to make request", { cause });
158
+ }
159
+ return new UnexpectedClientError(message, { cause });
160
+ }
161
+
162
+ async function readTransferText(
163
+ response: Response,
164
+ errorMessage: string,
165
+ ): Promise<string> {
166
+ try {
167
+ return await response.text();
168
+ } catch (cause) {
169
+ throw classifyTransferError(errorMessage, cause);
170
+ }
171
+ }
172
+
173
+ async function fetchDocsFromUrl<T>(
174
+ transferClient: HTTPClient,
175
+ docsUrl: string,
176
+ options?: RequestOptions,
177
+ ): Promise<T[]> {
178
+ let res: Response;
179
+ try {
180
+ res = await transferClient.request(
181
+ new Request(
182
+ docsUrl,
183
+ withTransferSignal({ method: "GET" }, options),
184
+ ),
185
+ );
186
+ } catch (cause) {
187
+ throw classifyTransferError("Failed to fetch documents from URL", cause);
188
+ }
189
+ const text = await readTransferText(
190
+ res,
191
+ "Failed to read documents from URL",
192
+ );
92
193
  if (!res.ok) {
93
- const text = await res.text();
94
194
  throw new UnexpectedClientError(
95
195
  `Failed to fetch documents from URL: ${res.status} ${res.statusText}${text ? ` - ${text}` : ""}`,
96
196
  );
97
197
  }
98
- const text = await res.text();
99
198
  if (text.trim() === "") {
100
199
  return [];
101
200
  }
@@ -146,6 +245,11 @@ export type LambdaDBClientOptions = SDKOptions & {
146
245
  * Project name (path segment under /projects/). Default: "playground"
147
246
  */
148
247
  projectName?: string;
248
+ /**
249
+ * Separate unauthenticated transport for presigned uploads and downloads.
250
+ * API authentication and API request headers are never copied to it.
251
+ */
252
+ transferClient?: HTTPClient;
149
253
  };
150
254
 
151
255
  function normalizeClientOptions(
@@ -156,8 +260,10 @@ function normalizeClientOptions(
156
260
  projectName = DEFAULT_PROJECT_NAME,
157
261
  serverURL,
158
262
  projectHost,
263
+ transferClient: _transferClient,
159
264
  ...rest
160
265
  } = options;
266
+ void _transferClient;
161
267
 
162
268
  if (serverURL !== undefined && serverURL !== null) {
163
269
  return { ...rest, serverURL };
@@ -176,8 +282,11 @@ function normalizeClientOptions(
176
282
  * `LambdaDB` when you want to avoid passing collectionName on every call.
177
283
  */
178
284
  export class LambdaDBClient extends LambdaDBCore {
179
- constructor(options?: LambdaDBClientOptions) {
285
+ readonly #transferClient: HTTPClient;
286
+
287
+ constructor(options: LambdaDBClientOptions = {}) {
180
288
  super(normalizeClientOptions(options));
289
+ this.#transferClient = options.transferClient ?? new HTTPClient();
181
290
  }
182
291
 
183
292
  /**
@@ -185,7 +294,7 @@ export class LambdaDBClient extends LambdaDBCore {
185
294
  * use this collection name; you do not pass it again.
186
295
  */
187
296
  collection(collectionName: string): CollectionHandle {
188
- return new CollectionHandle(this, collectionName);
297
+ return new CollectionHandle(this, collectionName, this.#transferClient);
189
298
  }
190
299
 
191
300
  /**
@@ -257,8 +366,10 @@ export class LambdaDBClient extends LambdaDBCore {
257
366
  async createCollection(
258
367
  request: CreateCollectionInput,
259
368
  options?: RequestOptions,
260
- ) {
261
- return unwrapAsync(collectionsCreate(this, request, options));
369
+ ): Promise<CreateCollectionResponseWithDates> {
370
+ return createCollectionResponseWithDates(
371
+ await unwrapAsync(collectionsCreate(this, request, options)),
372
+ );
262
373
  }
263
374
 
264
375
  /**
@@ -267,8 +378,10 @@ export class LambdaDBClient extends LambdaDBCore {
267
378
  async createCollectionSafe(
268
379
  request: CreateCollectionInput,
269
380
  options?: RequestOptions,
270
- ): Promise<Result<CreateCollectionResponse, CreateCollectionError>> {
271
- return await collectionsCreate(this, request, options);
381
+ ): Promise<Result<CreateCollectionResponseWithDates, CreateCollectionError>> {
382
+ const result = await collectionsCreate(this, request, options);
383
+ if (!result.ok) return result;
384
+ return OK(createCollectionResponseWithDates(result.value));
272
385
  }
273
386
  }
274
387
 
@@ -279,8 +392,13 @@ export class CollectionHandle {
279
392
  constructor(
280
393
  private readonly client: LambdaDBCore,
281
394
  readonly collectionName: string,
395
+ private readonly transferClient: HTTPClient = new HTTPClient(),
282
396
  ) {}
283
397
 
398
+ readonly branches = new CollectionBranches(this.client, this.collectionName);
399
+ readonly tags = new CollectionTags(this.client, this.collectionName);
400
+ readonly aliases = new CollectionAliases(this.client, this.collectionName);
401
+
284
402
  /**
285
403
  * Get metadata of this collection. Timestamp fields are returned as Date.
286
404
  */
@@ -312,8 +430,8 @@ export class CollectionHandle {
312
430
  async update(
313
431
  requestBody: UpdateCollectionInput,
314
432
  options?: RequestOptions,
315
- ) {
316
- return unwrapAsync(
433
+ ): Promise<UpdateCollectionResponseWithDates> {
434
+ const response = await unwrapAsync(
317
435
  collectionsUpdate(
318
436
  this.client,
319
437
  {
@@ -323,6 +441,7 @@ export class CollectionHandle {
323
441
  options,
324
442
  ),
325
443
  );
444
+ return updateCollectionResponseWithDates(response);
326
445
  }
327
446
 
328
447
  /**
@@ -331,12 +450,14 @@ export class CollectionHandle {
331
450
  async updateSafe(
332
451
  requestBody: UpdateCollectionInput,
333
452
  options?: RequestOptions,
334
- ): Promise<Result<UpdateCollectionResponse, UpdateCollectionError>> {
335
- return await collectionsUpdate(
453
+ ): Promise<Result<UpdateCollectionResponseWithDates, UpdateCollectionError>> {
454
+ const result = await collectionsUpdate(
336
455
  this.client,
337
456
  { collectionName: this.collectionName, requestBody },
338
457
  options,
339
458
  );
459
+ if (!result.ok) return result;
460
+ return OK(updateCollectionResponseWithDates(result.value));
340
461
  }
341
462
 
342
463
  /**
@@ -386,7 +507,9 @@ export class CollectionHandle {
386
507
  );
387
508
  if (!result.isDocsInline && result.docsUrl) {
388
509
  const docs = await fetchDocsFromUrl<QueryCollectionDoc>(
510
+ this.transferClient,
389
511
  result.docsUrl,
512
+ options,
390
513
  );
391
514
  return { ...result, docs, isDocsInline: true };
392
515
  }
@@ -409,7 +532,11 @@ export class CollectionHandle {
409
532
  if (!result.ok) return result;
410
533
  if (!result.value.isDocsInline && result.value.docsUrl) {
411
534
  try {
412
- const docs = await fetchDocsFromUrl<QueryCollectionDoc>(result.value.docsUrl);
535
+ const docs = await fetchDocsFromUrl<QueryCollectionDoc>(
536
+ this.transferClient,
537
+ result.value.docsUrl,
538
+ options,
539
+ );
413
540
  return OK({ ...result.value, docs, isDocsInline: true });
414
541
  } catch (e) {
415
542
  return ERR(e as QueryCollectionError);
@@ -418,16 +545,21 @@ export class CollectionHandle {
418
545
  return result;
419
546
  }
420
547
 
421
- readonly docs: CollectionDocs = new CollectionDocs(this.client, this.collectionName);
548
+ readonly docs: CollectionDocs = new CollectionDocs(
549
+ this.client,
550
+ this.collectionName,
551
+ this.transferClient,
552
+ );
422
553
  }
423
554
 
424
555
  /**
425
556
  * Document operations scoped to a collection.
426
557
  */
427
- class CollectionDocs {
558
+ export class CollectionDocs {
428
559
  constructor(
429
560
  private readonly client: LambdaDBCore,
430
561
  private readonly collectionName: string,
562
+ private readonly transferClient: HTTPClient,
431
563
  ) {}
432
564
 
433
565
  /**
@@ -455,6 +587,7 @@ class CollectionDocs {
455
587
  partitionFilter: params?.partitionFilter,
456
588
  fields: params?.fields,
457
589
  includeVectors: params?.includeVectors,
590
+ ref: params?.ref,
458
591
  },
459
592
  },
460
593
  options,
@@ -466,12 +599,18 @@ class CollectionDocs {
466
599
  size: params?.size,
467
600
  pageToken: params?.pageToken,
468
601
  includeVectors: params?.includeVectors,
602
+ refKind: params?.ref?.kind,
603
+ refName: params?.ref?.name,
469
604
  },
470
605
  options,
471
606
  ),
472
607
  );
473
608
  if (!result.isDocsInline && result.docsUrl) {
474
- const docs = await fetchDocsFromUrl<ListDocsDoc>(result.docsUrl);
609
+ const docs = await fetchDocsFromUrl<ListDocsDoc>(
610
+ this.transferClient,
611
+ result.docsUrl,
612
+ options,
613
+ );
475
614
  return { ...result, docs, isDocsInline: true };
476
615
  }
477
616
  return result;
@@ -500,6 +639,7 @@ class CollectionDocs {
500
639
  partitionFilter: params?.partitionFilter,
501
640
  fields: params?.fields,
502
641
  includeVectors: params?.includeVectors,
642
+ ref: params?.ref,
503
643
  },
504
644
  },
505
645
  options,
@@ -511,13 +651,19 @@ class CollectionDocs {
511
651
  size: params?.size,
512
652
  pageToken: params?.pageToken,
513
653
  includeVectors: params?.includeVectors,
654
+ refKind: params?.ref?.kind,
655
+ refName: params?.ref?.name,
514
656
  },
515
657
  options,
516
658
  );
517
659
  if (!result.ok) return result;
518
660
  if (!result.value.isDocsInline && result.value.docsUrl) {
519
661
  try {
520
- const docs = await fetchDocsFromUrl<ListDocsDoc>(result.value.docsUrl);
662
+ const docs = await fetchDocsFromUrl<ListDocsDoc>(
663
+ this.transferClient,
664
+ result.value.docsUrl,
665
+ options,
666
+ );
521
667
  return OK({ ...result.value, docs, isDocsInline: true });
522
668
  } catch (e) {
523
669
  return ERR(e as ListDocsError);
@@ -531,7 +677,8 @@ class CollectionDocs {
531
677
  * Use this to process large result sets without loading everything into memory.
532
678
  *
533
679
  * Note: The API limits response size by payload, not by document count. The number of docs per page
534
- * may be less than the requested `size` and can vary from page to page.
680
+ * may be less than the requested `size` and can vary from page to page. A page token is a search
681
+ * position, not a Snapshot pin; use one immutable Tag throughout a stable export.
535
682
  *
536
683
  * @example
537
684
  * for await (const page of collection.docs.listPages({ size: 50 })) {
@@ -550,6 +697,7 @@ class CollectionDocs {
550
697
  partitionFilter: params?.partitionFilter,
551
698
  fields: params?.fields,
552
699
  includeVectors: params?.includeVectors,
700
+ ref: params?.ref,
553
701
  };
554
702
  while (true) {
555
703
  const page = await this.list({ ...baseParams, pageToken }, options);
@@ -645,7 +793,7 @@ class CollectionDocs {
645
793
  }
646
794
 
647
795
  /**
648
- * Delete documents by ids and/or filter.
796
+ * Delete documents by exactly one of ids or filter. partitionFilter only narrows that selector.
649
797
  */
650
798
  async delete(
651
799
  body: DeleteDocsInput,
@@ -664,7 +812,7 @@ class CollectionDocs {
664
812
  }
665
813
 
666
814
  /**
667
- * Delete documents by ids and/or filter (Safe: returns Result instead of throwing).
815
+ * Delete documents by exactly one of ids or filter (Safe: returns Result instead of throwing).
668
816
  */
669
817
  async deleteSafe(
670
818
  body: DeleteDocsInput,
@@ -698,7 +846,9 @@ class CollectionDocs {
698
846
  );
699
847
  if (!result.isDocsInline && result.docsUrl) {
700
848
  const docs = await fetchDocsFromUrl<FetchDocsDoc>(
849
+ this.transferClient,
701
850
  result.docsUrl,
851
+ options,
702
852
  );
703
853
  return { ...result, docs, isDocsInline: true };
704
854
  }
@@ -721,7 +871,11 @@ class CollectionDocs {
721
871
  if (!result.ok) return result;
722
872
  if (!result.value.isDocsInline && result.value.docsUrl) {
723
873
  try {
724
- const docs = await fetchDocsFromUrl<FetchDocsDoc>(result.value.docsUrl);
874
+ const docs = await fetchDocsFromUrl<FetchDocsDoc>(
875
+ this.transferClient,
876
+ result.value.docsUrl,
877
+ options,
878
+ );
725
879
  return OK({ ...result.value, docs, isDocsInline: true });
726
880
  } catch (e) {
727
881
  return ERR(e as FetchDocsError);
@@ -733,12 +887,28 @@ class CollectionDocs {
733
887
  /**
734
888
  * Get presigned URL and metadata for bulk upload (up to 200MB). Not supported for collections with managed embedding vector fields.
735
889
  */
736
- async getBulkUpsert(options?: RequestOptions) {
890
+ async getBulkUpsert(
891
+ options?: RequestOptions,
892
+ ): Promise<GetBulkUpsertDocsResponse>;
893
+ async getBulkUpsert(
894
+ input: GetBulkUpsertInput,
895
+ options?: RequestOptions,
896
+ ): Promise<GetBulkUpsertDocsResponse>;
897
+ async getBulkUpsert(
898
+ inputOrOptions?: GetBulkUpsertInput | RequestOptions,
899
+ options?: RequestOptions,
900
+ ): Promise<GetBulkUpsertDocsResponse> {
901
+ const hasInput = options !== undefined
902
+ || (inputOrOptions != null && "branch" in inputOrOptions);
903
+ const input = hasInput ? inputOrOptions as GetBulkUpsertInput : {};
904
+ const requestOptions = hasInput
905
+ ? options
906
+ : inputOrOptions as RequestOptions | undefined;
737
907
  return unwrapAsync(
738
908
  collectionsDocsGetBulkUpsert(
739
909
  this.client,
740
- { collectionName: this.collectionName },
741
- options,
910
+ { collectionName: this.collectionName, branch: input.branch },
911
+ requestOptions,
742
912
  ),
743
913
  );
744
914
  }
@@ -748,11 +918,25 @@ class CollectionDocs {
748
918
  */
749
919
  async getBulkUpsertSafe(
750
920
  options?: RequestOptions,
921
+ ): Promise<Result<GetBulkUpsertDocsResponse, GetBulkUpsertDocsError>>;
922
+ async getBulkUpsertSafe(
923
+ input: GetBulkUpsertInput,
924
+ options?: RequestOptions,
925
+ ): Promise<Result<GetBulkUpsertDocsResponse, GetBulkUpsertDocsError>>;
926
+ async getBulkUpsertSafe(
927
+ inputOrOptions?: GetBulkUpsertInput | RequestOptions,
928
+ options?: RequestOptions,
751
929
  ): Promise<Result<GetBulkUpsertDocsResponse, GetBulkUpsertDocsError>> {
930
+ const hasInput = options !== undefined
931
+ || (inputOrOptions != null && "branch" in inputOrOptions);
932
+ const input = hasInput ? inputOrOptions as GetBulkUpsertInput : {};
933
+ const requestOptions = hasInput
934
+ ? options
935
+ : inputOrOptions as RequestOptions | undefined;
752
936
  return await collectionsDocsGetBulkUpsert(
753
937
  this.client,
754
- { collectionName: this.collectionName },
755
- options,
938
+ { collectionName: this.collectionName, branch: input.branch },
939
+ requestOptions,
756
940
  );
757
941
  }
758
942
 
@@ -792,42 +976,57 @@ class CollectionDocs {
792
976
  /**
793
977
  * Bulk upsert documents in one call (up to 200MB). Not supported for collections with managed embedding vector fields. Abstracts getBulkUpsert,
794
978
  * S3 upload via presigned URL, and bulkUpsert. Use this for better DX when
795
- * you have a document list; use getBulkUpsert + bulkUpsert for low-level control.
979
+ * you have a document list; use getBulkUpsert + bulkUpsert for low-level control. The create-only
980
+ * signed PUT is not retried, and a failed upload is not finalized.
796
981
  */
797
982
  async bulkUpsertDocs(
798
983
  body: UpsertDocsInput,
799
984
  options?: RequestOptions,
800
985
  ): Promise<MessageResponse> {
801
- const { url, type, httpMethod, objectKey, sizeLimitBytes } = await this.getBulkUpsert(options);
986
+ const { url, type, httpMethod, objectKey, sizeLimitBytes, headers } =
987
+ await this.getBulkUpsert({ branch: body.branch }, options);
802
988
 
803
- const payload = { docs: body.docs };
804
- const jsonString = JSON.stringify(payload);
805
- const sizeBytes = new TextEncoder().encode(jsonString).length;
989
+ const { jsonString, sizeBytes } = serializeBulkUpsertPayload(body.docs);
806
990
  if (sizeBytes > sizeLimitBytes) {
807
991
  throw new Error(
808
992
  `Bulk upsert payload size (${sizeBytes} bytes) exceeds limit (${sizeLimitBytes} bytes)`,
809
993
  );
810
994
  }
811
995
 
812
- const putResponse = await fetch(url, {
813
- method: httpMethod,
814
- headers: { "Content-Type": type },
815
- body: jsonString,
816
- });
996
+ const uploadHeaders = new Headers(headers);
997
+ uploadHeaders.set("Content-Type", type);
998
+ let putResponse: Response;
999
+ try {
1000
+ putResponse = await this.transferClient.request(
1001
+ new Request(
1002
+ url,
1003
+ withTransferSignal({
1004
+ method: httpMethod,
1005
+ headers: uploadHeaders,
1006
+ body: jsonString,
1007
+ }, options),
1008
+ ),
1009
+ );
1010
+ } catch (cause) {
1011
+ throw classifyTransferError("Bulk upsert upload failed", cause);
1012
+ }
817
1013
 
818
1014
  if (!putResponse.ok) {
819
- const text = await putResponse.text();
1015
+ const text = await readTransferText(
1016
+ putResponse,
1017
+ "Failed to read bulk upsert upload response",
1018
+ );
820
1019
  throw new Error(
821
1020
  `Bulk upsert upload failed: ${putResponse.status} ${putResponse.statusText}${text ? ` - ${text}` : ""}`,
822
1021
  );
823
1022
  }
824
1023
 
825
- return this.bulkUpsert({ objectKey }, options);
1024
+ return this.bulkUpsert({ objectKey, type, branch: body.branch }, options);
826
1025
  }
827
1026
 
828
1027
  /**
829
1028
  * Bulk upsert documents in one call (Safe: returns Result instead of throwing). Not supported for collections with managed embedding vector fields.
830
- * May return Error for local failures (payload size, upload). API errors use GetBulkUpsertDocsError or BulkUpsertDocsError.
1029
+ * May return Error for local failures (serialization, payload size, upload). API errors use GetBulkUpsertDocsError or BulkUpsertDocsError.
831
1030
  */
832
1031
  async bulkUpsertDocsSafe(
833
1032
  body: UpsertDocsInput,
@@ -838,13 +1037,28 @@ class CollectionDocs {
838
1037
  GetBulkUpsertDocsError | BulkUpsertDocsError | Error
839
1038
  >
840
1039
  > {
841
- const getResult = await this.getBulkUpsertSafe(options);
1040
+ const getResult = await this.getBulkUpsertSafe(
1041
+ { branch: body.branch },
1042
+ options,
1043
+ );
842
1044
  if (!getResult.ok) return getResult;
843
- const { url, type, httpMethod, objectKey, sizeLimitBytes } = getResult.value;
1045
+ const { url, type, httpMethod, objectKey, sizeLimitBytes, headers } =
1046
+ getResult.value;
844
1047
 
845
- const payload = { docs: body.docs };
846
- const jsonString = JSON.stringify(payload);
847
- const sizeBytes = new TextEncoder().encode(jsonString).length;
1048
+ let jsonString: string;
1049
+ let sizeBytes: number;
1050
+ try {
1051
+ ({ jsonString, sizeBytes } = serializeBulkUpsertPayload(body.docs));
1052
+ } catch (cause) {
1053
+ return ERR(
1054
+ cause instanceof Error
1055
+ ? cause
1056
+ : new UnexpectedClientError(
1057
+ "Failed to serialize bulk upsert payload",
1058
+ { cause },
1059
+ ),
1060
+ );
1061
+ }
848
1062
  if (sizeBytes > sizeLimitBytes) {
849
1063
  return ERR(
850
1064
  new Error(
@@ -853,14 +1067,41 @@ class CollectionDocs {
853
1067
  );
854
1068
  }
855
1069
 
856
- const putResponse = await fetch(url, {
857
- method: httpMethod,
858
- headers: { "Content-Type": type },
859
- body: jsonString,
860
- });
1070
+ let putResponse: Response;
1071
+ try {
1072
+ const uploadHeaders = new Headers(headers);
1073
+ uploadHeaders.set("Content-Type", type);
1074
+ putResponse = await this.transferClient.request(
1075
+ new Request(
1076
+ url,
1077
+ withTransferSignal({
1078
+ method: httpMethod,
1079
+ headers: uploadHeaders,
1080
+ body: jsonString,
1081
+ }, options),
1082
+ ),
1083
+ );
1084
+ } catch (cause) {
1085
+ return ERR(classifyTransferError("Bulk upsert upload failed", cause));
1086
+ }
861
1087
 
862
1088
  if (!putResponse.ok) {
863
- const text = await putResponse.text();
1089
+ let text: string;
1090
+ try {
1091
+ text = await readTransferText(
1092
+ putResponse,
1093
+ "Failed to read bulk upsert upload response",
1094
+ );
1095
+ } catch (cause) {
1096
+ return ERR(
1097
+ cause instanceof Error
1098
+ ? cause
1099
+ : new UnexpectedClientError(
1100
+ "Failed to read bulk upsert upload response",
1101
+ { cause },
1102
+ ),
1103
+ );
1104
+ }
864
1105
  return ERR(
865
1106
  new Error(
866
1107
  `Bulk upsert upload failed: ${putResponse.status} ${putResponse.statusText}${text ? ` - ${text}` : ""}`,
@@ -868,6 +1109,6 @@ class CollectionDocs {
868
1109
  );
869
1110
  }
870
1111
 
871
- return this.bulkUpsertSafe({ objectKey }, options);
1112
+ return this.bulkUpsertSafe({ objectKey, type, branch: body.branch }, options);
872
1113
  }
873
1114
  }