@azure/cosmos 4.5.1 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/README.md +32 -0
  2. package/dist/browser/ClientContext.d.ts.map +1 -1
  3. package/dist/browser/ClientContext.js +110 -19
  4. package/dist/browser/ClientContext.js.map +1 -1
  5. package/dist/browser/CosmosClient.d.ts +13 -0
  6. package/dist/browser/CosmosClient.d.ts.map +1 -1
  7. package/dist/browser/CosmosClient.js +19 -3
  8. package/dist/browser/CosmosClient.js.map +1 -1
  9. package/dist/browser/CosmosClientOptions.d.ts.map +1 -1
  10. package/dist/browser/CosmosClientOptions.js.map +1 -1
  11. package/dist/browser/CosmosDiagnostics.d.ts +4 -0
  12. package/dist/browser/CosmosDiagnostics.d.ts.map +1 -1
  13. package/dist/browser/CosmosDiagnostics.js.map +1 -1
  14. package/dist/browser/GlobalEndpointManagerOptions.d.ts +2 -0
  15. package/dist/browser/GlobalEndpointManagerOptions.d.ts.map +1 -0
  16. package/dist/browser/GlobalEndpointManagerOptions.js +2 -0
  17. package/dist/browser/GlobalEndpointManagerOptions.js.map +1 -0
  18. package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.d.ts.map +1 -1
  19. package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js +3 -0
  20. package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  21. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
  22. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js +3 -0
  23. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  24. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts +5 -0
  25. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts.map +1 -1
  26. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorOptions.js.map +1 -1
  27. package/dist/browser/client/ChangeFeed/InternalChangeFeedOptions.d.ts +1 -0
  28. package/dist/browser/client/ChangeFeed/InternalChangeFeedOptions.d.ts.map +1 -1
  29. package/dist/browser/client/ChangeFeed/InternalChangeFeedOptions.js.map +1 -1
  30. package/dist/browser/client/ChangeFeed/changeFeedUtils.d.ts.map +1 -1
  31. package/dist/browser/client/ChangeFeed/changeFeedUtils.js +1 -0
  32. package/dist/browser/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  33. package/dist/browser/client/Item/Items.d.ts.map +1 -1
  34. package/dist/browser/client/Item/Items.js +5 -0
  35. package/dist/browser/client/Item/Items.js.map +1 -1
  36. package/dist/browser/common/constants.d.ts +4 -0
  37. package/dist/browser/common/constants.d.ts.map +1 -1
  38. package/dist/browser/common/constants.js +5 -1
  39. package/dist/browser/common/constants.js.map +1 -1
  40. package/dist/browser/common/helper.d.ts +6 -0
  41. package/dist/browser/common/helper.d.ts.map +1 -1
  42. package/dist/browser/common/helper.js +9 -1
  43. package/dist/browser/common/helper.js.map +1 -1
  44. package/dist/browser/common/platform.d.ts +1 -0
  45. package/dist/browser/common/platform.d.ts.map +1 -1
  46. package/dist/browser/common/platform.js +1 -3
  47. package/dist/browser/common/platform.js.map +1 -1
  48. package/dist/browser/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
  49. package/dist/browser/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
  50. package/dist/browser/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  51. package/dist/browser/documents/ConnectionPolicy.d.ts +10 -4
  52. package/dist/browser/documents/ConnectionPolicy.d.ts.map +1 -1
  53. package/dist/browser/documents/ConnectionPolicy.js +2 -2
  54. package/dist/browser/documents/ConnectionPolicy.js.map +1 -1
  55. package/dist/browser/documents/DatabaseAccount.d.ts +4 -0
  56. package/dist/browser/documents/DatabaseAccount.d.ts.map +1 -1
  57. package/dist/browser/documents/DatabaseAccount.js +9 -0
  58. package/dist/browser/documents/DatabaseAccount.js.map +1 -1
  59. package/dist/browser/globalEndpointManager.d.ts +8 -0
  60. package/dist/browser/globalEndpointManager.d.ts.map +1 -1
  61. package/dist/browser/globalEndpointManager.js +68 -6
  62. package/dist/browser/globalEndpointManager.js.map +1 -1
  63. package/dist/browser/globalPartitionEndpointManager.d.ts +0 -2
  64. package/dist/browser/globalPartitionEndpointManager.d.ts.map +1 -1
  65. package/dist/browser/globalPartitionEndpointManager.js +13 -9
  66. package/dist/browser/globalPartitionEndpointManager.js.map +1 -1
  67. package/dist/browser/request/RequestHandler.js +2 -2
  68. package/dist/browser/request/RequestHandler.js.map +1 -1
  69. package/dist/browser/request/SharedOptions.d.ts +5 -0
  70. package/dist/browser/request/SharedOptions.d.ts.map +1 -1
  71. package/dist/browser/request/SharedOptions.js.map +1 -1
  72. package/dist/browser/retry/retryUtility.d.ts.map +1 -1
  73. package/dist/browser/retry/retryUtility.js +17 -3
  74. package/dist/browser/retry/retryUtility.js.map +1 -1
  75. package/dist/browser/retry/timeoutFailoverRetryPolicy.d.ts +1 -2
  76. package/dist/browser/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  77. package/dist/browser/retry/timeoutFailoverRetryPolicy.js +4 -4
  78. package/dist/browser/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  79. package/dist/browser/utils/encode.d.ts +1 -1
  80. package/dist/browser/utils/encode.d.ts.map +1 -1
  81. package/dist/browser/utils/encode.js.map +1 -1
  82. package/dist/commonjs/ClientContext.d.ts.map +1 -1
  83. package/dist/commonjs/ClientContext.js +110 -19
  84. package/dist/commonjs/ClientContext.js.map +1 -1
  85. package/dist/commonjs/CosmosClient.d.ts +13 -0
  86. package/dist/commonjs/CosmosClient.d.ts.map +1 -1
  87. package/dist/commonjs/CosmosClient.js +19 -3
  88. package/dist/commonjs/CosmosClient.js.map +1 -1
  89. package/dist/commonjs/CosmosClientOptions.d.ts.map +1 -1
  90. package/dist/commonjs/CosmosClientOptions.js.map +1 -1
  91. package/dist/commonjs/CosmosDiagnostics.d.ts +4 -0
  92. package/dist/commonjs/CosmosDiagnostics.d.ts.map +1 -1
  93. package/dist/commonjs/CosmosDiagnostics.js.map +1 -1
  94. package/dist/commonjs/GlobalEndpointManagerOptions.d.ts +2 -0
  95. package/dist/commonjs/GlobalEndpointManagerOptions.d.ts.map +1 -0
  96. package/dist/commonjs/GlobalEndpointManagerOptions.js +3 -0
  97. package/dist/commonjs/GlobalEndpointManagerOptions.js.map +1 -0
  98. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.d.ts.map +1 -1
  99. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js +3 -0
  100. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  101. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
  102. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +3 -0
  103. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  104. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts +5 -0
  105. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts.map +1 -1
  106. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorOptions.js.map +1 -1
  107. package/dist/commonjs/client/ChangeFeed/InternalChangeFeedOptions.d.ts +1 -0
  108. package/dist/commonjs/client/ChangeFeed/InternalChangeFeedOptions.d.ts.map +1 -1
  109. package/dist/commonjs/client/ChangeFeed/InternalChangeFeedOptions.js.map +1 -1
  110. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.d.ts.map +1 -1
  111. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js +1 -0
  112. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  113. package/dist/commonjs/client/Item/Items.d.ts.map +1 -1
  114. package/dist/commonjs/client/Item/Items.js +5 -0
  115. package/dist/commonjs/client/Item/Items.js.map +1 -1
  116. package/dist/commonjs/common/constants.d.ts +4 -0
  117. package/dist/commonjs/common/constants.d.ts.map +1 -1
  118. package/dist/commonjs/common/constants.js +6 -2
  119. package/dist/commonjs/common/constants.js.map +1 -1
  120. package/dist/commonjs/common/helper.d.ts +6 -0
  121. package/dist/commonjs/common/helper.d.ts.map +1 -1
  122. package/dist/commonjs/common/helper.js +9 -0
  123. package/dist/commonjs/common/helper.js.map +1 -1
  124. package/dist/commonjs/common/platform.d.ts +1 -0
  125. package/dist/commonjs/common/platform.d.ts.map +1 -1
  126. package/dist/commonjs/common/platform.js +1 -3
  127. package/dist/commonjs/common/platform.js.map +1 -1
  128. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
  129. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
  130. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  131. package/dist/commonjs/documents/ConnectionPolicy.d.ts +10 -4
  132. package/dist/commonjs/documents/ConnectionPolicy.d.ts.map +1 -1
  133. package/dist/commonjs/documents/ConnectionPolicy.js +2 -2
  134. package/dist/commonjs/documents/ConnectionPolicy.js.map +1 -1
  135. package/dist/commonjs/documents/DatabaseAccount.d.ts +4 -0
  136. package/dist/commonjs/documents/DatabaseAccount.d.ts.map +1 -1
  137. package/dist/commonjs/documents/DatabaseAccount.js +9 -0
  138. package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
  139. package/dist/commonjs/globalEndpointManager.d.ts +8 -0
  140. package/dist/commonjs/globalEndpointManager.d.ts.map +1 -1
  141. package/dist/commonjs/globalEndpointManager.js +68 -6
  142. package/dist/commonjs/globalEndpointManager.js.map +1 -1
  143. package/dist/commonjs/globalPartitionEndpointManager.d.ts +0 -2
  144. package/dist/commonjs/globalPartitionEndpointManager.d.ts.map +1 -1
  145. package/dist/commonjs/globalPartitionEndpointManager.js +13 -9
  146. package/dist/commonjs/globalPartitionEndpointManager.js.map +1 -1
  147. package/dist/commonjs/request/RequestHandler.js +2 -2
  148. package/dist/commonjs/request/RequestHandler.js.map +1 -1
  149. package/dist/commonjs/request/SharedOptions.d.ts +5 -0
  150. package/dist/commonjs/request/SharedOptions.d.ts.map +1 -1
  151. package/dist/commonjs/request/SharedOptions.js.map +1 -1
  152. package/dist/commonjs/retry/retryUtility.d.ts.map +1 -1
  153. package/dist/commonjs/retry/retryUtility.js +17 -3
  154. package/dist/commonjs/retry/retryUtility.js.map +1 -1
  155. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.d.ts +1 -2
  156. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  157. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +4 -4
  158. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  159. package/dist/commonjs/tsdoc-metadata.json +1 -1
  160. package/dist/commonjs/utils/encode.d.ts +1 -1
  161. package/dist/commonjs/utils/encode.d.ts.map +1 -1
  162. package/dist/commonjs/utils/encode.js.map +1 -1
  163. package/dist/esm/ClientContext.d.ts.map +1 -1
  164. package/dist/esm/ClientContext.js +110 -19
  165. package/dist/esm/ClientContext.js.map +1 -1
  166. package/dist/esm/CosmosClient.d.ts +13 -0
  167. package/dist/esm/CosmosClient.d.ts.map +1 -1
  168. package/dist/esm/CosmosClient.js +19 -3
  169. package/dist/esm/CosmosClient.js.map +1 -1
  170. package/dist/esm/CosmosClientOptions.d.ts.map +1 -1
  171. package/dist/esm/CosmosClientOptions.js.map +1 -1
  172. package/dist/esm/CosmosDiagnostics.d.ts +4 -0
  173. package/dist/esm/CosmosDiagnostics.d.ts.map +1 -1
  174. package/dist/esm/CosmosDiagnostics.js.map +1 -1
  175. package/dist/esm/GlobalEndpointManagerOptions.d.ts +2 -0
  176. package/dist/esm/GlobalEndpointManagerOptions.d.ts.map +1 -0
  177. package/dist/esm/GlobalEndpointManagerOptions.js +2 -0
  178. package/dist/esm/GlobalEndpointManagerOptions.js.map +1 -0
  179. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.d.ts.map +1 -1
  180. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js +3 -0
  181. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  182. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
  183. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js +3 -0
  184. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  185. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts +5 -0
  186. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts.map +1 -1
  187. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorOptions.js.map +1 -1
  188. package/dist/esm/client/ChangeFeed/InternalChangeFeedOptions.d.ts +1 -0
  189. package/dist/esm/client/ChangeFeed/InternalChangeFeedOptions.d.ts.map +1 -1
  190. package/dist/esm/client/ChangeFeed/InternalChangeFeedOptions.js.map +1 -1
  191. package/dist/esm/client/ChangeFeed/changeFeedUtils.d.ts.map +1 -1
  192. package/dist/esm/client/ChangeFeed/changeFeedUtils.js +1 -0
  193. package/dist/esm/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  194. package/dist/esm/client/Item/Items.d.ts.map +1 -1
  195. package/dist/esm/client/Item/Items.js +5 -0
  196. package/dist/esm/client/Item/Items.js.map +1 -1
  197. package/dist/esm/common/constants.d.ts +4 -0
  198. package/dist/esm/common/constants.d.ts.map +1 -1
  199. package/dist/esm/common/constants.js +5 -1
  200. package/dist/esm/common/constants.js.map +1 -1
  201. package/dist/esm/common/helper.d.ts +6 -0
  202. package/dist/esm/common/helper.d.ts.map +1 -1
  203. package/dist/esm/common/helper.js +9 -1
  204. package/dist/esm/common/helper.js.map +1 -1
  205. package/dist/esm/common/platform.d.ts +1 -0
  206. package/dist/esm/common/platform.d.ts.map +1 -1
  207. package/dist/esm/common/platform.js +1 -3
  208. package/dist/esm/common/platform.js.map +1 -1
  209. package/dist/esm/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
  210. package/dist/esm/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
  211. package/dist/esm/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  212. package/dist/esm/documents/ConnectionPolicy.d.ts +10 -4
  213. package/dist/esm/documents/ConnectionPolicy.d.ts.map +1 -1
  214. package/dist/esm/documents/ConnectionPolicy.js +2 -2
  215. package/dist/esm/documents/ConnectionPolicy.js.map +1 -1
  216. package/dist/esm/documents/DatabaseAccount.d.ts +4 -0
  217. package/dist/esm/documents/DatabaseAccount.d.ts.map +1 -1
  218. package/dist/esm/documents/DatabaseAccount.js +9 -0
  219. package/dist/esm/documents/DatabaseAccount.js.map +1 -1
  220. package/dist/esm/globalEndpointManager.d.ts +8 -0
  221. package/dist/esm/globalEndpointManager.d.ts.map +1 -1
  222. package/dist/esm/globalEndpointManager.js +68 -6
  223. package/dist/esm/globalEndpointManager.js.map +1 -1
  224. package/dist/esm/globalPartitionEndpointManager.d.ts +0 -2
  225. package/dist/esm/globalPartitionEndpointManager.d.ts.map +1 -1
  226. package/dist/esm/globalPartitionEndpointManager.js +13 -9
  227. package/dist/esm/globalPartitionEndpointManager.js.map +1 -1
  228. package/dist/esm/request/RequestHandler.js +2 -2
  229. package/dist/esm/request/RequestHandler.js.map +1 -1
  230. package/dist/esm/request/SharedOptions.d.ts +5 -0
  231. package/dist/esm/request/SharedOptions.d.ts.map +1 -1
  232. package/dist/esm/request/SharedOptions.js.map +1 -1
  233. package/dist/esm/retry/retryUtility.d.ts.map +1 -1
  234. package/dist/esm/retry/retryUtility.js +17 -3
  235. package/dist/esm/retry/retryUtility.js.map +1 -1
  236. package/dist/esm/retry/timeoutFailoverRetryPolicy.d.ts +1 -2
  237. package/dist/esm/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  238. package/dist/esm/retry/timeoutFailoverRetryPolicy.js +4 -4
  239. package/dist/esm/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  240. package/dist/esm/utils/encode.d.ts +1 -1
  241. package/dist/esm/utils/encode.d.ts.map +1 -1
  242. package/dist/esm/utils/encode.js.map +1 -1
  243. package/dist/react-native/ClientContext.d.ts.map +1 -1
  244. package/dist/react-native/ClientContext.js +110 -19
  245. package/dist/react-native/ClientContext.js.map +1 -1
  246. package/dist/react-native/CosmosClient.d.ts +13 -0
  247. package/dist/react-native/CosmosClient.d.ts.map +1 -1
  248. package/dist/react-native/CosmosClient.js +19 -3
  249. package/dist/react-native/CosmosClient.js.map +1 -1
  250. package/dist/react-native/CosmosClientOptions.d.ts.map +1 -1
  251. package/dist/react-native/CosmosClientOptions.js.map +1 -1
  252. package/dist/react-native/CosmosDiagnostics.d.ts +4 -0
  253. package/dist/react-native/CosmosDiagnostics.d.ts.map +1 -1
  254. package/dist/react-native/CosmosDiagnostics.js.map +1 -1
  255. package/dist/react-native/GlobalEndpointManagerOptions.d.ts +2 -0
  256. package/dist/react-native/GlobalEndpointManagerOptions.d.ts.map +1 -0
  257. package/dist/react-native/GlobalEndpointManagerOptions.js +2 -0
  258. package/dist/react-native/GlobalEndpointManagerOptions.js.map +1 -0
  259. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.d.ts.map +1 -1
  260. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js +3 -0
  261. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  262. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
  263. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js +3 -0
  264. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  265. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts +5 -0
  266. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts.map +1 -1
  267. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorOptions.js.map +1 -1
  268. package/dist/react-native/client/ChangeFeed/InternalChangeFeedOptions.d.ts +1 -0
  269. package/dist/react-native/client/ChangeFeed/InternalChangeFeedOptions.d.ts.map +1 -1
  270. package/dist/react-native/client/ChangeFeed/InternalChangeFeedOptions.js.map +1 -1
  271. package/dist/react-native/client/ChangeFeed/changeFeedUtils.d.ts.map +1 -1
  272. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js +1 -0
  273. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  274. package/dist/react-native/client/Item/Items.d.ts.map +1 -1
  275. package/dist/react-native/client/Item/Items.js +5 -0
  276. package/dist/react-native/client/Item/Items.js.map +1 -1
  277. package/dist/react-native/common/constants.d.ts +4 -0
  278. package/dist/react-native/common/constants.d.ts.map +1 -1
  279. package/dist/react-native/common/constants.js +5 -1
  280. package/dist/react-native/common/constants.js.map +1 -1
  281. package/dist/react-native/common/helper.d.ts +6 -0
  282. package/dist/react-native/common/helper.d.ts.map +1 -1
  283. package/dist/react-native/common/helper.js +9 -1
  284. package/dist/react-native/common/helper.js.map +1 -1
  285. package/dist/react-native/common/platform.d.ts +1 -0
  286. package/dist/react-native/common/platform.d.ts.map +1 -1
  287. package/dist/react-native/common/platform.js +1 -3
  288. package/dist/react-native/common/platform.js.map +1 -1
  289. package/dist/react-native/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
  290. package/dist/react-native/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
  291. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  292. package/dist/react-native/documents/ConnectionPolicy.d.ts +10 -4
  293. package/dist/react-native/documents/ConnectionPolicy.d.ts.map +1 -1
  294. package/dist/react-native/documents/ConnectionPolicy.js +2 -2
  295. package/dist/react-native/documents/ConnectionPolicy.js.map +1 -1
  296. package/dist/react-native/documents/DatabaseAccount.d.ts +4 -0
  297. package/dist/react-native/documents/DatabaseAccount.d.ts.map +1 -1
  298. package/dist/react-native/documents/DatabaseAccount.js +9 -0
  299. package/dist/react-native/documents/DatabaseAccount.js.map +1 -1
  300. package/dist/react-native/globalEndpointManager.d.ts +8 -0
  301. package/dist/react-native/globalEndpointManager.d.ts.map +1 -1
  302. package/dist/react-native/globalEndpointManager.js +68 -6
  303. package/dist/react-native/globalEndpointManager.js.map +1 -1
  304. package/dist/react-native/globalPartitionEndpointManager.d.ts +0 -2
  305. package/dist/react-native/globalPartitionEndpointManager.d.ts.map +1 -1
  306. package/dist/react-native/globalPartitionEndpointManager.js +13 -9
  307. package/dist/react-native/globalPartitionEndpointManager.js.map +1 -1
  308. package/dist/react-native/request/RequestHandler.js +2 -2
  309. package/dist/react-native/request/RequestHandler.js.map +1 -1
  310. package/dist/react-native/request/SharedOptions.d.ts +5 -0
  311. package/dist/react-native/request/SharedOptions.d.ts.map +1 -1
  312. package/dist/react-native/request/SharedOptions.js.map +1 -1
  313. package/dist/react-native/retry/retryUtility.d.ts.map +1 -1
  314. package/dist/react-native/retry/retryUtility.js +17 -3
  315. package/dist/react-native/retry/retryUtility.js.map +1 -1
  316. package/dist/react-native/retry/timeoutFailoverRetryPolicy.d.ts +1 -2
  317. package/dist/react-native/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  318. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +4 -4
  319. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  320. package/dist/react-native/utils/encode.d.ts +1 -1
  321. package/dist/react-native/utils/encode.d.ts.map +1 -1
  322. package/dist/react-native/utils/encode.js.map +1 -1
  323. package/package.json +3 -2
@@ -80,6 +80,7 @@ export function buildInternalChangeFeedOptions(options, continuationToken, start
80
80
  internalCfOptions.sessionToken = options?.sessionToken;
81
81
  internalCfOptions.continuationToken = continuationToken;
82
82
  internalCfOptions.changeFeedMode = options?.changeFeedMode;
83
+ internalCfOptions.excludedLocations = options?.excludedLocations;
83
84
  // Default option of changefeed is to start from now.
84
85
  if (startFromNow) {
85
86
  internalCfOptions.startFromNow = true;
@@ -1 +1 @@
1
- {"version":3,"file":"changeFeedUtils.js","sourceRoot":"","sources":["../../../../src/client/ChangeFeed/changeFeedUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ChangeFeedIteratorOptions } from \"./ChangeFeedIteratorOptions.js\";\nimport { ErrorResponse } from \"../../request/index.js\";\nimport type { PartitionKeyRange } from \"../Container/index.js\";\nimport type { InternalChangeFeedIteratorOptions } from \"./InternalChangeFeedOptions.js\";\nimport { isPrimitivePartitionKeyValue } from \"../../utils/typeChecks.js\";\nimport type { ChangeFeedStartFrom } from \"./ChangeFeedStartFrom.js\";\nimport { ChangeFeedStartFromBeginning } from \"./ChangeFeedStartFromBeginning.js\";\nimport { Constants } from \"../../common/index.js\";\nimport { ChangeFeedStartFromTime } from \"./ChangeFeedStartFromTime.js\";\nimport { QueryRange } from \"../../routing/index.js\";\nimport { FeedRangeInternal } from \"./FeedRange.js\";\nimport { hashV2PartitionKey } from \"../../utils/hashing/v2.js\";\nimport { PartitionKeyInternal } from \"../../documents/PartitionKeyInternal.js\";\nimport { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal.js\";\nimport { EncryptionProcessor } from \"../../encryption/index.js\";\nimport { ChangeFeedMode } from \"./ChangeFeedMode.js\";\nimport { ChangeFeedIteratorResponse } from \"./ChangeFeedIteratorResponse.js\";\n\n/**\n * @hidden\n * Validates the change feed options passed by the user\n */\nexport function validateChangeFeedIteratorOptions(options: ChangeFeedIteratorOptions): void {\n if (!isChangeFeedIteratorOptions(options)) {\n throw new ErrorResponse(\"Invalid Changefeed Iterator Options.\");\n }\n if (options?.maxItemCount && typeof options?.maxItemCount !== \"number\") {\n throw new ErrorResponse(\"maxItemCount must be number\");\n }\n if (options?.maxItemCount !== undefined && options?.maxItemCount < 1) {\n throw new ErrorResponse(\"maxItemCount must be a positive number\");\n }\n}\n\nfunction isChangeFeedIteratorOptions(options: unknown): options is ChangeFeedIteratorOptions {\n if (typeof options !== \"object\") {\n return false;\n }\n if (Object.keys(options).length === 0 && JSON.stringify(options) === \"{}\") {\n return true;\n }\n return options && !(isPrimitivePartitionKeyValue(options) || Array.isArray(options));\n}\n\n/**\n * @hidden\n * Checks if pkRange entirely covers the given overLapping range or there is only partial overlap.\n *\n * If no complete overlap, exact range which overlaps is retured which is used to set minEpk and maxEpk headers while quering change feed.\n */\nexport async function extractOverlappingRanges(\n epkRange: QueryRange,\n overLappingRange: PartitionKeyRange,\n): Promise<[string, string]> {\n if (\n overLappingRange.minInclusive >= epkRange.min &&\n overLappingRange.maxExclusive <= epkRange.max\n ) {\n return [undefined, undefined];\n } else if (\n overLappingRange.minInclusive <= epkRange.min &&\n overLappingRange.maxExclusive >= epkRange.max\n ) {\n return [epkRange.min, epkRange.max];\n }\n // Right Side of overlapping range is covered\n else if (\n overLappingRange.minInclusive <= epkRange.min &&\n overLappingRange.maxExclusive <= epkRange.max &&\n overLappingRange.maxExclusive >= epkRange.min\n ) {\n return [epkRange.min, overLappingRange.maxExclusive];\n }\n // Left Side of overlapping range is covered\n else {\n return [overLappingRange.minInclusive, epkRange.max];\n }\n}\n\n/**\n * @hidden\n * Checks if the object is a valid EpkRange\n */\nexport function isEpkRange(obj: unknown): boolean {\n return (\n obj instanceof FeedRangeInternal &&\n typeof obj.minInclusive === \"string\" &&\n typeof obj.maxExclusive === \"string\" &&\n obj.minInclusive >=\n Constants.EffectivePartitionKeyConstants.MinimumInclusiveEffectivePartitionKey &&\n obj.maxExclusive <=\n Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey &&\n obj.maxExclusive > obj.minInclusive\n );\n}\n\n/**\n * @hidden\n */\nexport function buildInternalChangeFeedOptions(\n options: ChangeFeedIteratorOptions,\n continuationToken?: string,\n startTime?: Date,\n startFromNow?: boolean,\n): InternalChangeFeedIteratorOptions {\n const internalCfOptions = {} as InternalChangeFeedIteratorOptions;\n internalCfOptions.maxItemCount = options?.maxItemCount;\n internalCfOptions.sessionToken = options?.sessionToken;\n internalCfOptions.continuationToken = continuationToken;\n internalCfOptions.changeFeedMode = options?.changeFeedMode;\n // Default option of changefeed is to start from now.\n if (startFromNow) {\n internalCfOptions.startFromNow = true;\n } else {\n internalCfOptions.startTime = startTime;\n }\n return internalCfOptions;\n}\n/**\n * @hidden\n */\nexport function fetchStartTime(changeFeedStartFrom: ChangeFeedStartFrom): Date | undefined {\n if (changeFeedStartFrom instanceof ChangeFeedStartFromBeginning) {\n return undefined;\n } else if (changeFeedStartFrom instanceof ChangeFeedStartFromTime) {\n return changeFeedStartFrom.getStartTime();\n }\n}\n\n/**\n * @hidden\n */\nexport function isNullOrEmpty(text: string | null | undefined): boolean {\n return text === null || text === undefined || text.trim() === \"\";\n}\n\n/**\n * @hidden\n */\nexport async function getEPKRangeForPrefixPartitionKey(\n internalPartitionKey: PartitionKeyInternal,\n): Promise<QueryRange> {\n const minEPK = getEffectivePartitionKeyForMultiHashPartitioning(internalPartitionKey);\n const maxEPK =\n minEPK + Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey;\n return new QueryRange(minEPK, maxEPK, true, false);\n}\n\n/**\n * @hidden\n */\nexport function getEffectivePartitionKeyForMultiHashPartitioning(\n partitionKeyInternal: PartitionKeyInternal,\n): string {\n const hashArray = partitionKeyInternal.map((item) => hashV2PartitionKey([item]));\n return hashArray.join(\"\");\n}\n\n/**\n * @hidden\n */\nexport async function decryptChangeFeedResponse(\n result: ChangeFeedIteratorResponse<any>,\n diagnosticNode: DiagnosticNodeInternal,\n changeFeedMode: ChangeFeedMode,\n encryptionProcessor: EncryptionProcessor,\n): Promise<void> {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let item of result.result) {\n if (changeFeedMode === ChangeFeedMode.AllVersionsAndDeletes) {\n if (\"current\" in item && item.current !== null) {\n const { body, propertiesDecryptedCount } = await encryptionProcessor.decrypt(item.current);\n item.current = body;\n count += propertiesDecryptedCount;\n }\n if (\"previous\" in item && item.previous !== null) {\n const { body, propertiesDecryptedCount } = await encryptionProcessor.decrypt(item.previous);\n item.previous = body;\n count += propertiesDecryptedCount;\n }\n } else {\n const { body, propertiesDecryptedCount } = await encryptionProcessor.decrypt(item);\n item = body;\n count += propertiesDecryptedCount;\n }\n }\n diagnosticNode.endEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation, count);\n}\n"]}
1
+ {"version":3,"file":"changeFeedUtils.js","sourceRoot":"","sources":["../../../../src/client/ChangeFeed/changeFeedUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ChangeFeedIteratorOptions } from \"./ChangeFeedIteratorOptions.js\";\nimport { ErrorResponse } from \"../../request/index.js\";\nimport type { PartitionKeyRange } from \"../Container/index.js\";\nimport type { InternalChangeFeedIteratorOptions } from \"./InternalChangeFeedOptions.js\";\nimport { isPrimitivePartitionKeyValue } from \"../../utils/typeChecks.js\";\nimport type { ChangeFeedStartFrom } from \"./ChangeFeedStartFrom.js\";\nimport { ChangeFeedStartFromBeginning } from \"./ChangeFeedStartFromBeginning.js\";\nimport { Constants } from \"../../common/index.js\";\nimport { ChangeFeedStartFromTime } from \"./ChangeFeedStartFromTime.js\";\nimport { QueryRange } from \"../../routing/index.js\";\nimport { FeedRangeInternal } from \"./FeedRange.js\";\nimport { hashV2PartitionKey } from \"../../utils/hashing/v2.js\";\nimport { PartitionKeyInternal } from \"../../documents/PartitionKeyInternal.js\";\nimport { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal.js\";\nimport { EncryptionProcessor } from \"../../encryption/index.js\";\nimport { ChangeFeedMode } from \"./ChangeFeedMode.js\";\nimport { ChangeFeedIteratorResponse } from \"./ChangeFeedIteratorResponse.js\";\n\n/**\n * @hidden\n * Validates the change feed options passed by the user\n */\nexport function validateChangeFeedIteratorOptions(options: ChangeFeedIteratorOptions): void {\n if (!isChangeFeedIteratorOptions(options)) {\n throw new ErrorResponse(\"Invalid Changefeed Iterator Options.\");\n }\n if (options?.maxItemCount && typeof options?.maxItemCount !== \"number\") {\n throw new ErrorResponse(\"maxItemCount must be number\");\n }\n if (options?.maxItemCount !== undefined && options?.maxItemCount < 1) {\n throw new ErrorResponse(\"maxItemCount must be a positive number\");\n }\n}\n\nfunction isChangeFeedIteratorOptions(options: unknown): options is ChangeFeedIteratorOptions {\n if (typeof options !== \"object\") {\n return false;\n }\n if (Object.keys(options).length === 0 && JSON.stringify(options) === \"{}\") {\n return true;\n }\n return options && !(isPrimitivePartitionKeyValue(options) || Array.isArray(options));\n}\n\n/**\n * @hidden\n * Checks if pkRange entirely covers the given overLapping range or there is only partial overlap.\n *\n * If no complete overlap, exact range which overlaps is retured which is used to set minEpk and maxEpk headers while quering change feed.\n */\nexport async function extractOverlappingRanges(\n epkRange: QueryRange,\n overLappingRange: PartitionKeyRange,\n): Promise<[string, string]> {\n if (\n overLappingRange.minInclusive >= epkRange.min &&\n overLappingRange.maxExclusive <= epkRange.max\n ) {\n return [undefined, undefined];\n } else if (\n overLappingRange.minInclusive <= epkRange.min &&\n overLappingRange.maxExclusive >= epkRange.max\n ) {\n return [epkRange.min, epkRange.max];\n }\n // Right Side of overlapping range is covered\n else if (\n overLappingRange.minInclusive <= epkRange.min &&\n overLappingRange.maxExclusive <= epkRange.max &&\n overLappingRange.maxExclusive >= epkRange.min\n ) {\n return [epkRange.min, overLappingRange.maxExclusive];\n }\n // Left Side of overlapping range is covered\n else {\n return [overLappingRange.minInclusive, epkRange.max];\n }\n}\n\n/**\n * @hidden\n * Checks if the object is a valid EpkRange\n */\nexport function isEpkRange(obj: unknown): boolean {\n return (\n obj instanceof FeedRangeInternal &&\n typeof obj.minInclusive === \"string\" &&\n typeof obj.maxExclusive === \"string\" &&\n obj.minInclusive >=\n Constants.EffectivePartitionKeyConstants.MinimumInclusiveEffectivePartitionKey &&\n obj.maxExclusive <=\n Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey &&\n obj.maxExclusive > obj.minInclusive\n );\n}\n\n/**\n * @hidden\n */\nexport function buildInternalChangeFeedOptions(\n options: ChangeFeedIteratorOptions,\n continuationToken?: string,\n startTime?: Date,\n startFromNow?: boolean,\n): InternalChangeFeedIteratorOptions {\n const internalCfOptions = {} as InternalChangeFeedIteratorOptions;\n internalCfOptions.maxItemCount = options?.maxItemCount;\n internalCfOptions.sessionToken = options?.sessionToken;\n internalCfOptions.continuationToken = continuationToken;\n internalCfOptions.changeFeedMode = options?.changeFeedMode;\n internalCfOptions.excludedLocations = options?.excludedLocations;\n // Default option of changefeed is to start from now.\n if (startFromNow) {\n internalCfOptions.startFromNow = true;\n } else {\n internalCfOptions.startTime = startTime;\n }\n return internalCfOptions;\n}\n/**\n * @hidden\n */\nexport function fetchStartTime(changeFeedStartFrom: ChangeFeedStartFrom): Date | undefined {\n if (changeFeedStartFrom instanceof ChangeFeedStartFromBeginning) {\n return undefined;\n } else if (changeFeedStartFrom instanceof ChangeFeedStartFromTime) {\n return changeFeedStartFrom.getStartTime();\n }\n}\n\n/**\n * @hidden\n */\nexport function isNullOrEmpty(text: string | null | undefined): boolean {\n return text === null || text === undefined || text.trim() === \"\";\n}\n\n/**\n * @hidden\n */\nexport async function getEPKRangeForPrefixPartitionKey(\n internalPartitionKey: PartitionKeyInternal,\n): Promise<QueryRange> {\n const minEPK = getEffectivePartitionKeyForMultiHashPartitioning(internalPartitionKey);\n const maxEPK =\n minEPK + Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey;\n return new QueryRange(minEPK, maxEPK, true, false);\n}\n\n/**\n * @hidden\n */\nexport function getEffectivePartitionKeyForMultiHashPartitioning(\n partitionKeyInternal: PartitionKeyInternal,\n): string {\n const hashArray = partitionKeyInternal.map((item) => hashV2PartitionKey([item]));\n return hashArray.join(\"\");\n}\n\n/**\n * @hidden\n */\nexport async function decryptChangeFeedResponse(\n result: ChangeFeedIteratorResponse<any>,\n diagnosticNode: DiagnosticNodeInternal,\n changeFeedMode: ChangeFeedMode,\n encryptionProcessor: EncryptionProcessor,\n): Promise<void> {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let item of result.result) {\n if (changeFeedMode === ChangeFeedMode.AllVersionsAndDeletes) {\n if (\"current\" in item && item.current !== null) {\n const { body, propertiesDecryptedCount } = await encryptionProcessor.decrypt(item.current);\n item.current = body;\n count += propertiesDecryptedCount;\n }\n if (\"previous\" in item && item.previous !== null) {\n const { body, propertiesDecryptedCount } = await encryptionProcessor.decrypt(item.previous);\n item.previous = body;\n count += propertiesDecryptedCount;\n }\n } else {\n const { body, propertiesDecryptedCount } = await encryptionProcessor.decrypt(item);\n item = body;\n count += propertiesDecryptedCount;\n }\n }\n diagnosticNode.endEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation, count);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Items.d.ts","sourceRoot":"","sources":["../../../../src/client/Item/Items.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Items.d.ts","sourceRoot":"","sources":["../../../../src/client/Item/Items.ts"],"names":[],"mappings":"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"}
@@ -656,6 +656,11 @@ export class Items {
656
656
  if (operations.length > 100) {
657
657
  throw new Error("Cannot run batch request with more than 100 operations per partition");
658
658
  }
659
+ for (const operationInput of operations) {
660
+ if (operationInput && operationInput.partitionKey !== undefined) {
661
+ operationInput.partitionKey = JSON.stringify(convertToInternalPartitionKey(operationInput.partitionKey));
662
+ }
663
+ }
659
664
  let response;
660
665
  try {
661
666
  if (this.clientContext.enableEncryption) {
@@ -1 +1 @@
1
- {"version":3,"file":"Items.js","sourceRoot":"","sources":["../../../../src/client/Item/Items.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ChangeFeedIterator } from \"../../ChangeFeedIterator.js\";\nimport type { ChangeFeedOptions } from \"../../ChangeFeedOptions.js\";\nimport type { ClientContext } from \"../../ClientContext.js\";\nimport {\n Constants,\n copyObject,\n getIdFromLink,\n getPathFromLink,\n isItemResourceValid,\n ResourceType,\n StatusCodes,\n SubStatusCodes,\n} from \"../../common/index.js\";\nimport { extractPartitionKeys, setPartitionKeyIfUndefined } from \"../../extractPartitionKey.js\";\nimport type { FetchFunctionCallback, SqlQuerySpec } from \"../../queryExecutionContext/index.js\";\nimport { QueryIterator } from \"../../queryIterator.js\";\nimport type { FeedOptions, RequestOptions, Response } from \"../../request/index.js\";\nimport type { Container, PartitionKeyRange } from \"../Container/index.js\";\nimport { Item } from \"./Item.js\";\nimport type { ItemDefinition } from \"./ItemDefinition.js\";\nimport { ItemResponse } from \"./ItemResponse.js\";\nimport type {\n Batch,\n OperationResponse,\n OperationInput,\n BulkOptions,\n BulkOperationResponse,\n Operation,\n BulkOperationResult,\n} from \"../../utils/batch.js\";\nimport {\n isKeyInRange,\n prepareOperations,\n decorateBatchOperation,\n splitBatchBasedOnBodySize,\n encryptOperationInput,\n} from \"../../utils/batch.js\";\nimport { assertNotUndefined, isPrimitivePartitionKeyValue } from \"../../utils/typeChecks.js\";\nimport { hashPartitionKey } from \"../../utils/hashing/hash.js\";\nimport { PartitionKeyRangeCache, QueryRange } from \"../../routing/index.js\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PartitionKeyInternal,\n} from \"../../documents/index.js\";\nimport { convertToInternalPartitionKey } from \"../../documents/index.js\";\nimport type {\n ChangeFeedPullModelIterator,\n ChangeFeedIteratorOptions,\n} from \"../../client/ChangeFeed/index.js\";\nimport { validateChangeFeedIteratorOptions } from \"../../client/ChangeFeed/changeFeedUtils.js\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal.js\";\nimport { DiagnosticNodeType } from \"../../diagnostics/DiagnosticNodeInternal.js\";\nimport {\n getEmptyCosmosDiagnostics,\n withDiagnostics,\n addDiagnosticChild,\n} from \"../../utils/diagnostics.js\";\nimport { randomUUID } from \"@azure/core-util\";\nimport { computePartitionKeyRangeId, readPartitionKeyDefinition } from \"../ClientUtils.js\";\nimport { ChangeFeedIteratorBuilder } from \"../ChangeFeed/ChangeFeedIteratorBuilder.js\";\nimport type { EncryptionQueryBuilder } from \"../../encryption/index.js\";\nimport type { EncryptionSqlParameter } from \"../../encryption/EncryptionQueryBuilder.js\";\nimport type { Resource } from \"../Resource.js\";\nimport { TypeMarker } from \"../../encryption/enums/TypeMarker.js\";\nimport { EncryptionItemQueryIterator } from \"../../encryption/EncryptionItemQueryIterator.js\";\nimport { ErrorResponse } from \"../../request/index.js\";\nimport { BulkHelper } from \"../../bulk/BulkHelper.js\";\n\n/**\n * @hidden\n */\nfunction isChangeFeedOptions(options: unknown): options is ChangeFeedOptions {\n return options && !(isPrimitivePartitionKeyValue(options) || Array.isArray(options));\n}\n\n/**\n * Operations for creating new items, and reading/querying all items\n *\n * @see {@link Item} for reading, replacing, or deleting an existing container; use `.item(id)`.\n */\nexport class Items {\n private partitionKeyRangeCache: PartitionKeyRangeCache;\n /**\n * Create an instance of {@link Items} linked to the parent {@link Container}.\n * @param container - The parent container.\n * @hidden\n */\n constructor(\n public readonly container: Container,\n private readonly clientContext: ClientContext,\n ) {\n this.partitionKeyRangeCache = this.clientContext.partitionKeyRangeCache;\n }\n\n /**\n * Queries all items.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsQueryItems\n * import { CosmosClient, SqlQuerySpec } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const querySpec: SqlQuerySpec = {\n * query: `SELECT * FROM Families f WHERE f.lastName = @lastName`,\n * parameters: [{ name: \"@lastName\", value: \"Hendricks\" }],\n * };\n * const { resources: items } = await container.items.query(querySpec).fetchAll();\n * ```\n */\n\n //\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator<any>;\n /**\n * Queries all items.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsQueryItems\n * import { CosmosClient, SqlQuerySpec } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const querySpec: SqlQuerySpec = {\n * query: `SELECT * FROM Families f WHERE f.lastName = @lastName`,\n * parameters: [{ name: \"@lastName\", value: \"Hendricks\" }],\n * };\n * const { resources: items } = await container.items.query(querySpec).fetchAll();\n * ```\n */\n public query<T>(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator<T>;\n public query<T>(query: string | SqlQuerySpec, options: FeedOptions = {}): QueryIterator<T> {\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n\n const fetchFunction: FetchFunctionCallback = async (\n diagnosticNode: DiagnosticNodeInternal,\n innerOptions: FeedOptions,\n correlatedActivityId: string,\n ) => {\n let internalPartitionKey: PartitionKeyInternal | undefined;\n if (options.partitionKey) {\n internalPartitionKey = convertToInternalPartitionKey(options.partitionKey);\n }\n const isPartitionLevelFailOverEnabled = this.clientContext.isPartitionLevelFailOverEnabled();\n const partitionKeyRangeId = await computePartitionKeyRangeId(\n diagnosticNode,\n internalPartitionKey,\n this.partitionKeyRangeCache,\n isPartitionLevelFailOverEnabled,\n this.container,\n );\n\n const response = await this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n resultFn: (result) => (result ? result.Documents : []),\n query,\n options: innerOptions,\n partitionKey: options.partitionKey,\n diagnosticNode,\n correlatedActivityId: correlatedActivityId,\n partitionKeyRangeId,\n });\n return response;\n };\n let iterator: QueryIterator<T>;\n if (this.clientContext.enableEncryption) {\n iterator = new EncryptionItemQueryIterator(\n this.clientContext,\n query,\n options,\n fetchFunction,\n this.container,\n );\n } else {\n iterator = new QueryIterator<T>(\n this.clientContext,\n query,\n options,\n fetchFunction,\n this.container.url,\n ResourceType.item,\n );\n }\n return iterator;\n }\n /**\n * Queries all items in an encrypted container.\n * @param queryBuilder - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to build a query on encrypted properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsQueryEncryptedItems\n * import { CosmosClient, EncryptionQueryBuilder } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const queryBuilder = new EncryptionQueryBuilder(\n * `SELECT firstname FROM Families f WHERE f.lastName = @lastName`,\n * );\n * queryBuilder.addParameter(\"@lastName\", \"Hendricks\", \"/lastname\");\n * const queryIterator = await container.items.getEncryptionQueryIterator(queryBuilder);\n * const { resources: items } = await queryIterator.fetchAll();\n * ```\n */\n public async getEncryptionQueryIterator(\n queryBuilder: EncryptionQueryBuilder,\n options: FeedOptions = {},\n ): Promise<QueryIterator<ItemDefinition>> {\n const encryptionSqlQuerySpec = queryBuilder.toEncryptionSqlQuerySpec();\n const sqlQuerySpec = await this.buildSqlQuerySpec(encryptionSqlQuerySpec);\n if (this.clientContext.enableEncryption && options.partitionKey) {\n await this.container.checkAndInitializeEncryption();\n const { partitionKeyList, encryptedCount } =\n await this.container.encryptionProcessor.getEncryptedPartitionKeyValue([\n options.partitionKey,\n ] as PartitionKeyInternal);\n if (encryptedCount > 0) {\n options.partitionKey = partitionKeyList[0];\n }\n }\n const iterator = this.query<ItemDefinition>(sqlQuerySpec, options);\n return iterator;\n }\n\n private async buildSqlQuerySpec(encryptionSqlQuerySpec: SqlQuerySpec): Promise<SqlQuerySpec> {\n let encryptionParameters = encryptionSqlQuerySpec.parameters as EncryptionSqlParameter[];\n const sqlQuerySpec: SqlQuerySpec = {\n query: encryptionSqlQuerySpec.query,\n parameters: [],\n };\n // returns copy to avoid encryption of original parameters passed\n encryptionParameters = copyObject(encryptionParameters);\n for (const parameter of encryptionParameters) {\n let value: any;\n if (parameter.type !== undefined || parameter.type !== TypeMarker.Null) {\n value = await this.container.encryptionProcessor.encryptQueryParameter(\n parameter.path,\n parameter.value,\n parameter.path === \"/id\",\n parameter.type,\n );\n }\n sqlQuerySpec.parameters.push({ name: parameter.name, value: value });\n }\n return sqlQuerySpec;\n }\n\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n *\n * @deprecated Use `getChangeFeedIterator` instead.\n *\n * @example Read from the beginning of the change feed.\n * ```ts snippet:ignore\n * const iterator = items.readChangeFeed({ startFromBeginning: true });\n * const firstPage = await iterator.fetchNext();\n * const firstPageResults = firstPage.result\n * const secondPage = await iterator.fetchNext();\n * ```\n */\n public readChangeFeed(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<any>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n *\n */\n public readChangeFeed(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator<any>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public readChangeFeed<T>(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<T>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public readChangeFeed<T>(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator<T>;\n public readChangeFeed<T>(\n partitionKeyOrChangeFeedOptions?: PartitionKey | ChangeFeedOptions,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<T> {\n if (isChangeFeedOptions(partitionKeyOrChangeFeedOptions)) {\n return this.changeFeed(partitionKeyOrChangeFeedOptions);\n } else {\n return this.changeFeed(partitionKeyOrChangeFeedOptions, changeFeedOptions);\n }\n }\n\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n * @example Read from the beginning of the change feed.\n * ```ts snippet:ignore\n * const iterator = items.readChangeFeed({ startFromBeginning: true });\n * const firstPage = await iterator.fetchNext();\n * const firstPageResults = firstPage.result\n * const secondPage = await iterator.fetchNext();\n * ```\n */\n public changeFeed(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<any>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public changeFeed(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator<any>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public changeFeed<T>(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<T>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public changeFeed<T>(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator<T>;\n public changeFeed<T>(\n partitionKeyOrChangeFeedOptions?: PartitionKey | ChangeFeedOptions,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<T> {\n let partitionKey: PartitionKey;\n if (!changeFeedOptions && isChangeFeedOptions(partitionKeyOrChangeFeedOptions)) {\n partitionKey = undefined;\n changeFeedOptions = partitionKeyOrChangeFeedOptions;\n } else if (\n partitionKeyOrChangeFeedOptions !== undefined &&\n !isChangeFeedOptions(partitionKeyOrChangeFeedOptions)\n ) {\n partitionKey = partitionKeyOrChangeFeedOptions;\n }\n\n if (!changeFeedOptions) {\n changeFeedOptions = {};\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n return new ChangeFeedIterator<T>(this.clientContext, id, path, partitionKey, changeFeedOptions);\n }\n\n /**\n * Returns an iterator to iterate over pages of changes. The iterator returned can be used to fetch changes for a single partition key, feed range or an entire container.\n *\n * @example\n * ```ts snippet:ReadmeSampleChangeFeedPullModelIteratorPartitionKey\n * import {\n * CosmosClient,\n * PartitionKeyDefinitionVersion,\n * PartitionKeyKind,\n * ChangeFeedStartFrom,\n * } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const containerDefinition = {\n * id: \"Test Database\",\n * partitionKey: {\n * paths: [\"/name\", \"/address/zip\"],\n * version: PartitionKeyDefinitionVersion.V2,\n * kind: PartitionKeyKind.MultiHash,\n * },\n * };\n * const { container } = await database.containers.createIfNotExists(containerDefinition);\n *\n * const partitionKey = \"some-partition-Key-value\";\n * const options = {\n * changeFeedStartFrom: ChangeFeedStartFrom.Beginning(partitionKey),\n * };\n *\n * const iterator = container.items.getChangeFeedIterator(options);\n *\n * while (iterator.hasMoreResults) {\n * const response = await iterator.readNext();\n * // process this response\n * }\n * ```\n */\n public getChangeFeedIterator<T>(\n changeFeedIteratorOptions?: ChangeFeedIteratorOptions,\n ): ChangeFeedPullModelIterator<T> {\n const cfOptions = changeFeedIteratorOptions !== undefined ? changeFeedIteratorOptions : {};\n validateChangeFeedIteratorOptions(cfOptions);\n const iterator = new ChangeFeedIteratorBuilder<T>(\n cfOptions,\n this.clientContext,\n this.container,\n this.partitionKeyRangeCache,\n );\n return iterator;\n }\n\n /**\n * Read all items.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsReadAll\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const { resources: containerList } = await container.items.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator<ItemDefinition>;\n /**\n * Read all items.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsReadAll\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const { resources: containerList } = await container.items.readAll().fetchAll();\n * ```\n */\n public readAll<T extends ItemDefinition>(options?: FeedOptions): QueryIterator<T>;\n public readAll<T extends ItemDefinition>(options?: FeedOptions): QueryIterator<T> {\n return this.query<T>(\"SELECT * from c\", options);\n }\n\n /**\n * Create an item.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - Represents the body of the item. Can contain any number of user defined properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Create an item.\n * ```ts snippet:ContainerItems\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const { resource: createdItem } = await container.items.create({\n * id: \"<item id>\",\n * properties: {},\n * });\n * ```\n */\n public async create<T extends ItemDefinition = any>(\n body: T,\n options: RequestOptions = {},\n ): Promise<ItemResponse<T>> {\n // Generate random document id if the id is missing in the payload and\n // options.disableAutomaticIdGeneration != true\n\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if ((body.id === undefined || body.id === \"\") && !options.disableAutomaticIdGeneration) {\n body.id = randomUUID();\n }\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n let partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n let response: Response<T & Resource>;\n try {\n if (this.clientContext.enableEncryption) {\n await this.container.checkAndInitializeEncryption();\n options.containerRid = this.container._rid;\n // returns copy to avoid encryption of original body passed\n body = copyObject(body);\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n );\n const { body: encryptedBody, propertiesEncryptedCount } =\n await this.container.encryptionProcessor.encrypt(body);\n body = encryptedBody;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n propertiesEncryptedCount,\n );\n\n partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n }\n const err = {};\n if (!isItemResourceValid(body, err)) {\n throw err;\n }\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n\n const isPartitionLevelFailOverEnabled =\n this.clientContext.isPartitionLevelFailOverEnabled();\n const partitionKeyRangeId = await computePartitionKeyRangeId(\n diagnosticNode,\n partitionKey,\n this.partitionKeyRangeCache,\n isPartitionLevelFailOverEnabled,\n this.container,\n partitionKeyDefinition,\n );\n\n response = await this.clientContext.create<T>({\n body,\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n diagnosticNode,\n options,\n partitionKey,\n partitionKeyRangeId,\n });\n } catch (error: any) {\n if (this.clientContext.enableEncryption) {\n // Todo: internally retry post policy refresh\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n throw error;\n }\n\n if (this.clientContext.enableEncryption) {\n // try block for decrypting response. This is done so that we can throw special error message in case of decryption failure\n try {\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n const { body: decryptedResult, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(response.result);\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n propertiesDecryptedCount,\n );\n response.result = decryptedResult;\n partitionKey = extractPartitionKeys(response.result, partitionKeyDefinition);\n } catch (error) {\n const decryptionError = new ErrorResponse(\n `Item creation was successful but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n }\n const ref = new Item(\n this.container,\n (response.result as any).id,\n this.clientContext,\n partitionKey,\n );\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Upsert an item.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - Represents the body of the item. Can contain any number of user defined properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n */\n public async upsert(\n body: unknown,\n options?: RequestOptions,\n ): Promise<ItemResponse<ItemDefinition>>;\n /**\n * Upsert an item.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - Represents the body of the item. Can contain any number of user defined properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Upsert an item.\n * ```ts snippet:ItemsUpsert\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const { resource: createdItem1 } = await container.items.create({\n * id: \"<item id 1>\",\n * properties: {},\n * });\n *\n * const { resource: upsertItem1 } = await container.items.upsert({\n * id: \"<item id 1>\",\n * updated_properties: {},\n * });\n *\n * const { resource: upsertItem2 } = await container.items.upsert({\n * id: \"<item id 2>\",\n * properties: {},\n * });\n * ```\n */\n public async upsert<T extends ItemDefinition>(\n body: T,\n options?: RequestOptions,\n ): Promise<ItemResponse<T>>;\n public async upsert<T extends ItemDefinition>(\n body: T,\n options: RequestOptions = {},\n ): Promise<ItemResponse<T>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n // Generate random document id if the id is missing in the payload and\n // options.disableAutomaticIdGeneration != true\n if ((body.id === undefined || body.id === \"\") && !options.disableAutomaticIdGeneration) {\n body.id = randomUUID();\n }\n\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n let partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n let response: Response<T & Resource>;\n try {\n if (this.clientContext.enableEncryption) {\n // returns copy to avoid encryption of original body passed\n body = copyObject(body);\n options = options || {};\n await this.container.checkAndInitializeEncryption();\n options.containerRid = this.container._rid;\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n );\n const { body: encryptedBody, propertiesEncryptedCount } =\n await this.container.encryptionProcessor.encrypt(body);\n body = encryptedBody;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n propertiesEncryptedCount,\n );\n partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n }\n\n const err = {};\n if (!isItemResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n\n const isPartitionLevelFailOverEnabled =\n this.clientContext.isPartitionLevelFailOverEnabled();\n const partitionKeyRangeId = await computePartitionKeyRangeId(\n diagnosticNode,\n partitionKey,\n this.partitionKeyRangeCache,\n isPartitionLevelFailOverEnabled,\n this.container,\n partitionKeyDefinition,\n );\n\n response = await this.clientContext.upsert<T>({\n body,\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n options,\n partitionKey,\n diagnosticNode,\n partitionKeyRangeId,\n });\n } catch (error: any) {\n if (this.clientContext.enableEncryption) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n throw error;\n }\n if (this.clientContext.enableEncryption) {\n try {\n // try block for decrypting response. This is done so that we can throw special error message in case of decryption failure\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n const { body: decryptedResult, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(response.result);\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n propertiesDecryptedCount,\n );\n response.result = decryptedResult;\n partitionKey = extractPartitionKeys(response.result, partitionKeyDefinition);\n } catch (error) {\n const decryptionError = new ErrorResponse(\n `Item upsert was successful but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n }\n\n const ref = new Item(\n this.container,\n (response.result as any).id,\n this.clientContext,\n partitionKey,\n );\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Execute bulk operations on items.\n * @param operations - List of operations\n * @param options - used for modifying the request\n * @returns list of operation results corresponding to the operations\n *\n * @example\n * ```ts snippet:ItemsExecuteBulkOperations\n * import { CosmosClient, OperationInput } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const operations: OperationInput[] = [\n * {\n * operationType: \"Create\",\n * resourceBody: { id: \"doc1\", name: \"sample\", key: \"A\" },\n * },\n * {\n * operationType: \"Upsert\",\n * partitionKey: \"A\",\n * resourceBody: { id: \"doc2\", name: \"other\", key: \"A\" },\n * },\n * ];\n *\n * await container.items.executeBulkOperations(operations);\n * ```\n */\n public async executeBulkOperations(\n operations: OperationInput[],\n options: RequestOptions = {},\n ): Promise<BulkOperationResult[]> {\n const bulkHelper = new BulkHelper(\n this.container,\n this.clientContext,\n this.partitionKeyRangeCache,\n options,\n );\n return bulkHelper.execute(operations);\n }\n\n /**\n * Execute bulk operations on items.\n * @deprecated Use `executeBulkOperations` instead.\n *\n * Bulk takes an array of Operations which are typed based on what the operation does.\n * The choices are: Create, Upsert, Read, Replace, and Delete\n *\n * Usage example:\n * ```ts snippet:ItemsBulk\n * import { CosmosClient, OperationInput } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * // partitionKey is optional at the top level if present in the resourceBody\n * const operations: OperationInput[] = [\n * {\n * operationType: \"Create\",\n * resourceBody: { id: \"doc1\", name: \"sample\", key: \"A\" },\n * },\n * {\n * operationType: \"Upsert\",\n * partitionKey: \"A\",\n * resourceBody: { id: \"doc2\", name: \"other\", key: \"A\" },\n * },\n * ];\n *\n * await container.items.bulk(operations);\n * ```\n *\n * @param operations - List of operations. Limit 100\n * @param bulkOptions - Optional options object to modify bulk behavior. Pass \\{ continueOnError: false \\} to stop executing operations when one fails. (Defaults to true)\n * @param options - Used for modifying the request.\n */\n public async bulk(\n operations: OperationInput[],\n bulkOptions?: BulkOptions,\n options?: RequestOptions,\n ): Promise<BulkOperationResponse> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const partitionKeyRanges = (\n await this.partitionKeyRangeCache.onCollectionRoutingMap(this.container.url, diagnosticNode)\n ).getOrderedParitionKeyRanges();\n\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n\n if (this.clientContext.enableEncryption) {\n // returns copy to avoid encryption of original operations body passed\n operations = copyObject(operations);\n options = options || {};\n await this.container.checkAndInitializeEncryption();\n options.containerRid = this.container._rid;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsEncryptOperation);\n const { operations: encryptedOperations, totalPropertiesEncryptedCount } =\n await this.bulkBatchEncryptionHelper(operations);\n operations = encryptedOperations;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n totalPropertiesEncryptedCount,\n );\n }\n\n const batches: Batch[] = partitionKeyRanges.map((keyRange: PartitionKeyRange) => {\n return {\n min: keyRange.minInclusive,\n max: keyRange.maxExclusive,\n rangeId: keyRange.id,\n indexes: [] as number[],\n operations: [] as Operation[],\n };\n });\n\n this.groupOperationsBasedOnPartitionKey(operations, partitionKeyDefinition, options, batches);\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n\n const orderedResponses: OperationResponse[] = [];\n // split batches based on cumulative size of operations\n const batchMap = batches\n .filter((batch: Batch) => batch.operations.length)\n .flatMap((batch: Batch) => splitBatchBasedOnBodySize(batch));\n\n await Promise.all(\n this.executeBatchOperations(\n batchMap,\n path,\n bulkOptions,\n options,\n diagnosticNode,\n orderedResponses,\n partitionKeyDefinition,\n ),\n );\n const response: any = orderedResponses;\n response.diagnostics = diagnosticNode.toDiagnostic(this.clientContext.getClientConfig());\n return response;\n }, this.clientContext);\n }\n\n private executeBatchOperations(\n batchMap: Batch[],\n path: string,\n bulkOptions: BulkOptions,\n options: RequestOptions,\n diagnosticNode: DiagnosticNodeInternal,\n orderedResponses: OperationResponse[],\n partitionKeyDefinition: PartitionKeyDefinition,\n ): Promise<void>[] {\n return batchMap.map(async (batch: Batch) => {\n if (batch.operations.length > 100) {\n throw new Error(\"Cannot run bulk request with more than 100 operations per partition\");\n }\n let response: Response<OperationResponse[]>;\n try {\n response = await addDiagnosticChild(\n async (childNode: DiagnosticNodeInternal) =>\n this.clientContext.bulk({\n body: batch.operations,\n partitionKeyRangeId: batch.rangeId,\n path,\n resourceId: this.container.url,\n bulkOptions,\n options,\n diagnosticNode: childNode,\n }),\n diagnosticNode,\n DiagnosticNodeType.BATCH_REQUEST,\n );\n response.result.forEach((operationResponse: OperationResponse, index: number) => {\n orderedResponses[batch.indexes[index]] = operationResponse;\n });\n } catch (err: any) {\n if (this.clientContext.enableEncryption) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(err);\n }\n // In the case of 410 errors, we need to recompute the partition key ranges\n // and redo the batch request, however, 410 errors occur for unsupported\n // partition key types as well since we don't support them, so for now we throw\n if (err.code === StatusCodes.Gone) {\n const isPartitionSplit =\n err.substatus === SubStatusCodes.PartitionKeyRangeGone ||\n err.substatus === SubStatusCodes.CompletingSplit;\n\n if (isPartitionSplit) {\n const queryRange = new QueryRange(batch.min, batch.max, true, false);\n const overlappingRanges = await this.partitionKeyRangeCache.getOverlappingRanges(\n this.container.url,\n queryRange,\n diagnosticNode,\n true,\n );\n if (overlappingRanges.length < 1) {\n throw new Error(\"Partition split/merge detected but no overlapping ranges found.\");\n }\n // Handles both merge (overlappingRanges.length === 1) and split (overlappingRanges.length > 1) cases.\n if (overlappingRanges.length >= 1) {\n // const splitBatches: Batch[] = [];\n const newBatches: Batch[] = this.createNewBatches(\n overlappingRanges,\n batch,\n partitionKeyDefinition,\n );\n\n await Promise.all(\n this.executeBatchOperations(\n newBatches,\n path,\n bulkOptions,\n options,\n diagnosticNode,\n orderedResponses,\n partitionKeyDefinition,\n ),\n );\n }\n } else {\n throw new Error(\n \"Partition key error. An operation has an unsupported partitionKey type\" +\n err.message,\n );\n }\n } else {\n throw new Error(`Bulk request errored with: ${err.message}`);\n }\n }\n if (response) {\n try {\n if (this.clientContext.enableEncryption) {\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n let count = 0;\n for (const result of response.result) {\n if (result.resourceBody) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(result.resourceBody);\n result.resourceBody = body;\n count += propertiesDecryptedCount;\n }\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n } catch (error) {\n const decryptionError = new ErrorResponse(\n `Batch response was received but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n response.result.forEach((operationResponse: OperationResponse, index: number) => {\n orderedResponses[batch.indexes[index]] = operationResponse;\n });\n }\n });\n }\n\n /**\n * Function to create new batches based of partition key Ranges.\n *\n * @param overlappingRanges - Overlapping partition key ranges.\n * @param batch - Batch to be split.\n * @param partitionKeyDefinition - PartitionKey definition of container.\n * @returns Array of new batches.\n */\n private createNewBatches(\n overlappingRanges: PartitionKeyRange[],\n batch: Batch,\n partitionKeyDefinition: PartitionKeyDefinition,\n ): Batch[] {\n const newBatches: Batch[] = overlappingRanges.map((keyRange: PartitionKeyRange) => {\n return {\n min: keyRange.minInclusive,\n max: keyRange.maxExclusive,\n rangeId: keyRange.id,\n indexes: [] as number[],\n operations: [] as Operation[],\n };\n });\n let indexValue = 0;\n batch.operations.forEach((operation) => {\n const partitionKey = JSON.parse(operation.partitionKey);\n const hashed = hashPartitionKey(\n assertNotUndefined(\n partitionKey,\n \"undefined value for PartitionKey is not expected during grouping of bulk operations.\",\n ),\n partitionKeyDefinition,\n );\n const batchForKey = assertNotUndefined(\n newBatches.find((newBatch: Batch) => {\n return isKeyInRange(newBatch.min, newBatch.max, hashed);\n }),\n \"No suitable Batch found.\",\n );\n batchForKey.operations.push(operation);\n batchForKey.indexes.push(batch.indexes[indexValue]);\n indexValue++;\n });\n return newBatches;\n }\n\n /**\n * Function to create batches based of partition key Ranges.\n * @param operations - operations to group\n * @param partitionDefinition - PartitionKey definition of container.\n * @param options - Request options for bulk request.\n * @param batches - Groups to be filled with operations.\n */\n private groupOperationsBasedOnPartitionKey(\n operations: OperationInput[],\n partitionDefinition: PartitionKeyDefinition,\n options: RequestOptions | undefined,\n batches: Batch[],\n ) {\n operations.forEach((operationInput, index: number) => {\n const { operation, partitionKey } = prepareOperations(\n operationInput,\n partitionDefinition,\n options,\n );\n const hashed = hashPartitionKey(\n assertNotUndefined(\n partitionKey,\n \"undefined value for PartitionKey is not expected during grouping of bulk operations.\",\n ),\n partitionDefinition,\n );\n const batchForKey = assertNotUndefined(\n batches.find((batch: Batch) => {\n return isKeyInRange(batch.min, batch.max, hashed);\n }),\n \"No suitable Batch found.\",\n );\n batchForKey.operations.push(operation);\n batchForKey.indexes.push(index);\n });\n }\n\n /**\n * Execute transactional batch operations on items.\n *\n * Batch takes an array of Operations which are typed based on what the operation does. Batch is transactional and will rollback all operations if one fails.\n * The choices are: Create, Upsert, Read, Replace, and Delete\n *\n * Usage example:\n * ```ts snippet:ItemsBatch\n * import { CosmosClient, OperationInput } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * // The partitionKey is a required second argument. If it’s undefined, it defaults to the expected partition key format.\n * const operations: OperationInput[] = [\n * {\n * operationType: \"Create\",\n * resourceBody: { id: \"doc1\", name: \"sample\", key: \"A\" },\n * },\n * {\n * operationType: \"Upsert\",\n * resourceBody: { id: \"doc2\", name: \"other\", key: \"A\" },\n * },\n * ];\n *\n * await container.items.batch(operations, \"A\");\n * ```\n *\n * @param operations - List of operations. Limit 100\n * @param options - Used for modifying the request\n */\n public async batch(\n operations: OperationInput[],\n partitionKey?: PartitionKey,\n options?: RequestOptions,\n ): Promise<Response<OperationResponse[]>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n operations.map((operation) => decorateBatchOperation(operation, options));\n partitionKey = await setPartitionKeyIfUndefined(diagnosticNode, this.container, partitionKey);\n const path = getPathFromLink(this.container.url, ResourceType.item);\n\n if (operations.length > 100) {\n throw new Error(\"Cannot run batch request with more than 100 operations per partition\");\n }\n let response: Response<OperationResponse[]>;\n try {\n if (this.clientContext.enableEncryption) {\n // returns copy to avoid encryption of original operations body passed\n operations = copyObject(operations);\n options = options || {};\n await this.container.checkAndInitializeEncryption();\n options.containerRid = this.container._rid;\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n );\n if (partitionKey) {\n const partitionKeyInternal = convertToInternalPartitionKey(partitionKey);\n const { partitionKeyList, encryptedCount } =\n await this.container.encryptionProcessor.getEncryptedPartitionKeyValue(\n partitionKeyInternal,\n );\n partitionKey = partitionKeyList;\n count += encryptedCount;\n }\n const { operations: encryptedOperations, totalPropertiesEncryptedCount } =\n await this.bulkBatchEncryptionHelper(operations);\n operations = encryptedOperations;\n count += totalPropertiesEncryptedCount;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n count,\n );\n }\n\n const isPartitionLevelFailOverEnabled =\n this.clientContext.isPartitionLevelFailOverEnabled();\n const partitionKeyRangeId = await computePartitionKeyRangeId(\n diagnosticNode,\n partitionKey,\n this.partitionKeyRangeCache,\n isPartitionLevelFailOverEnabled,\n this.container,\n );\n\n response = await this.clientContext.batch({\n body: operations,\n partitionKey,\n path,\n resourceId: this.container.url,\n options,\n diagnosticNode,\n partitionKeyRangeId,\n });\n } catch (err: any) {\n if (this.clientContext.enableEncryption) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(err);\n }\n throw new Error(`Batch request error: ${err.message}`);\n }\n if (this.clientContext.enableEncryption) {\n try {\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n let count = 0;\n for (const result of response.result) {\n if (result.resourceBody) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(result.resourceBody);\n result.resourceBody = body;\n count += propertiesDecryptedCount;\n }\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n } catch (error) {\n const decryptionError = new ErrorResponse(\n `Batch response was received but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n }\n return response;\n }, this.clientContext);\n }\n\n private async bulkBatchEncryptionHelper(\n operations: OperationInput[],\n ): Promise<{ operations: OperationInput[]; totalPropertiesEncryptedCount: number }> {\n let totalPropertiesEncryptedCount = 0;\n const encryptedOperations: OperationInput[] = [];\n for (const operation of operations) {\n const { operation: encryptedOp, totalPropertiesEncryptedCount: updatedCount } =\n await encryptOperationInput(\n this.container.encryptionProcessor,\n operation,\n totalPropertiesEncryptedCount,\n );\n totalPropertiesEncryptedCount = updatedCount;\n encryptedOperations.push(encryptedOp);\n }\n return { operations: encryptedOperations, totalPropertiesEncryptedCount };\n }\n}\n"]}
1
+ {"version":3,"file":"Items.js","sourceRoot":"","sources":["../../../../src/client/Item/Items.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ChangeFeedIterator } from \"../../ChangeFeedIterator.js\";\nimport type { ChangeFeedOptions } from \"../../ChangeFeedOptions.js\";\nimport type { ClientContext } from \"../../ClientContext.js\";\nimport {\n Constants,\n copyObject,\n getIdFromLink,\n getPathFromLink,\n isItemResourceValid,\n ResourceType,\n StatusCodes,\n SubStatusCodes,\n} from \"../../common/index.js\";\nimport { extractPartitionKeys, setPartitionKeyIfUndefined } from \"../../extractPartitionKey.js\";\nimport type { FetchFunctionCallback, SqlQuerySpec } from \"../../queryExecutionContext/index.js\";\nimport { QueryIterator } from \"../../queryIterator.js\";\nimport type { FeedOptions, RequestOptions, Response } from \"../../request/index.js\";\nimport type { Container, PartitionKeyRange } from \"../Container/index.js\";\nimport { Item } from \"./Item.js\";\nimport type { ItemDefinition } from \"./ItemDefinition.js\";\nimport { ItemResponse } from \"./ItemResponse.js\";\nimport type {\n Batch,\n OperationResponse,\n OperationInput,\n BulkOptions,\n BulkOperationResponse,\n Operation,\n BulkOperationResult,\n} from \"../../utils/batch.js\";\nimport {\n isKeyInRange,\n prepareOperations,\n decorateBatchOperation,\n splitBatchBasedOnBodySize,\n encryptOperationInput,\n} from \"../../utils/batch.js\";\nimport { assertNotUndefined, isPrimitivePartitionKeyValue } from \"../../utils/typeChecks.js\";\nimport { hashPartitionKey } from \"../../utils/hashing/hash.js\";\nimport { PartitionKeyRangeCache, QueryRange } from \"../../routing/index.js\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PartitionKeyInternal,\n} from \"../../documents/index.js\";\nimport { convertToInternalPartitionKey } from \"../../documents/index.js\";\nimport type {\n ChangeFeedPullModelIterator,\n ChangeFeedIteratorOptions,\n} from \"../../client/ChangeFeed/index.js\";\nimport { validateChangeFeedIteratorOptions } from \"../../client/ChangeFeed/changeFeedUtils.js\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal.js\";\nimport { DiagnosticNodeType } from \"../../diagnostics/DiagnosticNodeInternal.js\";\nimport {\n getEmptyCosmosDiagnostics,\n withDiagnostics,\n addDiagnosticChild,\n} from \"../../utils/diagnostics.js\";\nimport { randomUUID } from \"@azure/core-util\";\nimport { computePartitionKeyRangeId, readPartitionKeyDefinition } from \"../ClientUtils.js\";\nimport { ChangeFeedIteratorBuilder } from \"../ChangeFeed/ChangeFeedIteratorBuilder.js\";\nimport type { EncryptionQueryBuilder } from \"../../encryption/index.js\";\nimport type { EncryptionSqlParameter } from \"../../encryption/EncryptionQueryBuilder.js\";\nimport type { Resource } from \"../Resource.js\";\nimport { TypeMarker } from \"../../encryption/enums/TypeMarker.js\";\nimport { EncryptionItemQueryIterator } from \"../../encryption/EncryptionItemQueryIterator.js\";\nimport { ErrorResponse } from \"../../request/index.js\";\nimport { BulkHelper } from \"../../bulk/BulkHelper.js\";\n\n/**\n * @hidden\n */\nfunction isChangeFeedOptions(options: unknown): options is ChangeFeedOptions {\n return options && !(isPrimitivePartitionKeyValue(options) || Array.isArray(options));\n}\n\n/**\n * Operations for creating new items, and reading/querying all items\n *\n * @see {@link Item} for reading, replacing, or deleting an existing container; use `.item(id)`.\n */\nexport class Items {\n private partitionKeyRangeCache: PartitionKeyRangeCache;\n /**\n * Create an instance of {@link Items} linked to the parent {@link Container}.\n * @param container - The parent container.\n * @hidden\n */\n constructor(\n public readonly container: Container,\n private readonly clientContext: ClientContext,\n ) {\n this.partitionKeyRangeCache = this.clientContext.partitionKeyRangeCache;\n }\n\n /**\n * Queries all items.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsQueryItems\n * import { CosmosClient, SqlQuerySpec } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const querySpec: SqlQuerySpec = {\n * query: `SELECT * FROM Families f WHERE f.lastName = @lastName`,\n * parameters: [{ name: \"@lastName\", value: \"Hendricks\" }],\n * };\n * const { resources: items } = await container.items.query(querySpec).fetchAll();\n * ```\n */\n\n //\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator<any>;\n /**\n * Queries all items.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsQueryItems\n * import { CosmosClient, SqlQuerySpec } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const querySpec: SqlQuerySpec = {\n * query: `SELECT * FROM Families f WHERE f.lastName = @lastName`,\n * parameters: [{ name: \"@lastName\", value: \"Hendricks\" }],\n * };\n * const { resources: items } = await container.items.query(querySpec).fetchAll();\n * ```\n */\n public query<T>(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator<T>;\n public query<T>(query: string | SqlQuerySpec, options: FeedOptions = {}): QueryIterator<T> {\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n\n const fetchFunction: FetchFunctionCallback = async (\n diagnosticNode: DiagnosticNodeInternal,\n innerOptions: FeedOptions,\n correlatedActivityId: string,\n ) => {\n let internalPartitionKey: PartitionKeyInternal | undefined;\n if (options.partitionKey) {\n internalPartitionKey = convertToInternalPartitionKey(options.partitionKey);\n }\n const isPartitionLevelFailOverEnabled = this.clientContext.isPartitionLevelFailOverEnabled();\n const partitionKeyRangeId = await computePartitionKeyRangeId(\n diagnosticNode,\n internalPartitionKey,\n this.partitionKeyRangeCache,\n isPartitionLevelFailOverEnabled,\n this.container,\n );\n\n const response = await this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n resultFn: (result) => (result ? result.Documents : []),\n query,\n options: innerOptions,\n partitionKey: options.partitionKey,\n diagnosticNode,\n correlatedActivityId: correlatedActivityId,\n partitionKeyRangeId,\n });\n return response;\n };\n let iterator: QueryIterator<T>;\n if (this.clientContext.enableEncryption) {\n iterator = new EncryptionItemQueryIterator(\n this.clientContext,\n query,\n options,\n fetchFunction,\n this.container,\n );\n } else {\n iterator = new QueryIterator<T>(\n this.clientContext,\n query,\n options,\n fetchFunction,\n this.container.url,\n ResourceType.item,\n );\n }\n return iterator;\n }\n /**\n * Queries all items in an encrypted container.\n * @param queryBuilder - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to build a query on encrypted properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsQueryEncryptedItems\n * import { CosmosClient, EncryptionQueryBuilder } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const queryBuilder = new EncryptionQueryBuilder(\n * `SELECT firstname FROM Families f WHERE f.lastName = @lastName`,\n * );\n * queryBuilder.addParameter(\"@lastName\", \"Hendricks\", \"/lastname\");\n * const queryIterator = await container.items.getEncryptionQueryIterator(queryBuilder);\n * const { resources: items } = await queryIterator.fetchAll();\n * ```\n */\n public async getEncryptionQueryIterator(\n queryBuilder: EncryptionQueryBuilder,\n options: FeedOptions = {},\n ): Promise<QueryIterator<ItemDefinition>> {\n const encryptionSqlQuerySpec = queryBuilder.toEncryptionSqlQuerySpec();\n const sqlQuerySpec = await this.buildSqlQuerySpec(encryptionSqlQuerySpec);\n if (this.clientContext.enableEncryption && options.partitionKey) {\n await this.container.checkAndInitializeEncryption();\n const { partitionKeyList, encryptedCount } =\n await this.container.encryptionProcessor.getEncryptedPartitionKeyValue([\n options.partitionKey,\n ] as PartitionKeyInternal);\n if (encryptedCount > 0) {\n options.partitionKey = partitionKeyList[0];\n }\n }\n const iterator = this.query<ItemDefinition>(sqlQuerySpec, options);\n return iterator;\n }\n\n private async buildSqlQuerySpec(encryptionSqlQuerySpec: SqlQuerySpec): Promise<SqlQuerySpec> {\n let encryptionParameters = encryptionSqlQuerySpec.parameters as EncryptionSqlParameter[];\n const sqlQuerySpec: SqlQuerySpec = {\n query: encryptionSqlQuerySpec.query,\n parameters: [],\n };\n // returns copy to avoid encryption of original parameters passed\n encryptionParameters = copyObject(encryptionParameters);\n for (const parameter of encryptionParameters) {\n let value: any;\n if (parameter.type !== undefined || parameter.type !== TypeMarker.Null) {\n value = await this.container.encryptionProcessor.encryptQueryParameter(\n parameter.path,\n parameter.value,\n parameter.path === \"/id\",\n parameter.type,\n );\n }\n sqlQuerySpec.parameters.push({ name: parameter.name, value: value });\n }\n return sqlQuerySpec;\n }\n\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n *\n * @deprecated Use `getChangeFeedIterator` instead.\n *\n * @example Read from the beginning of the change feed.\n * ```ts snippet:ignore\n * const iterator = items.readChangeFeed({ startFromBeginning: true });\n * const firstPage = await iterator.fetchNext();\n * const firstPageResults = firstPage.result\n * const secondPage = await iterator.fetchNext();\n * ```\n */\n public readChangeFeed(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<any>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n *\n */\n public readChangeFeed(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator<any>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public readChangeFeed<T>(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<T>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public readChangeFeed<T>(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator<T>;\n public readChangeFeed<T>(\n partitionKeyOrChangeFeedOptions?: PartitionKey | ChangeFeedOptions,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<T> {\n if (isChangeFeedOptions(partitionKeyOrChangeFeedOptions)) {\n return this.changeFeed(partitionKeyOrChangeFeedOptions);\n } else {\n return this.changeFeed(partitionKeyOrChangeFeedOptions, changeFeedOptions);\n }\n }\n\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n * @example Read from the beginning of the change feed.\n * ```ts snippet:ignore\n * const iterator = items.readChangeFeed({ startFromBeginning: true });\n * const firstPage = await iterator.fetchNext();\n * const firstPageResults = firstPage.result\n * const secondPage = await iterator.fetchNext();\n * ```\n */\n public changeFeed(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<any>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public changeFeed(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator<any>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public changeFeed<T>(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<T>;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `getChangeFeedIterator` instead.\n */\n public changeFeed<T>(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator<T>;\n public changeFeed<T>(\n partitionKeyOrChangeFeedOptions?: PartitionKey | ChangeFeedOptions,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator<T> {\n let partitionKey: PartitionKey;\n if (!changeFeedOptions && isChangeFeedOptions(partitionKeyOrChangeFeedOptions)) {\n partitionKey = undefined;\n changeFeedOptions = partitionKeyOrChangeFeedOptions;\n } else if (\n partitionKeyOrChangeFeedOptions !== undefined &&\n !isChangeFeedOptions(partitionKeyOrChangeFeedOptions)\n ) {\n partitionKey = partitionKeyOrChangeFeedOptions;\n }\n\n if (!changeFeedOptions) {\n changeFeedOptions = {};\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n return new ChangeFeedIterator<T>(this.clientContext, id, path, partitionKey, changeFeedOptions);\n }\n\n /**\n * Returns an iterator to iterate over pages of changes. The iterator returned can be used to fetch changes for a single partition key, feed range or an entire container.\n *\n * @example\n * ```ts snippet:ReadmeSampleChangeFeedPullModelIteratorPartitionKey\n * import {\n * CosmosClient,\n * PartitionKeyDefinitionVersion,\n * PartitionKeyKind,\n * ChangeFeedStartFrom,\n * } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const containerDefinition = {\n * id: \"Test Database\",\n * partitionKey: {\n * paths: [\"/name\", \"/address/zip\"],\n * version: PartitionKeyDefinitionVersion.V2,\n * kind: PartitionKeyKind.MultiHash,\n * },\n * };\n * const { container } = await database.containers.createIfNotExists(containerDefinition);\n *\n * const partitionKey = \"some-partition-Key-value\";\n * const options = {\n * changeFeedStartFrom: ChangeFeedStartFrom.Beginning(partitionKey),\n * };\n *\n * const iterator = container.items.getChangeFeedIterator(options);\n *\n * while (iterator.hasMoreResults) {\n * const response = await iterator.readNext();\n * // process this response\n * }\n * ```\n */\n public getChangeFeedIterator<T>(\n changeFeedIteratorOptions?: ChangeFeedIteratorOptions,\n ): ChangeFeedPullModelIterator<T> {\n const cfOptions = changeFeedIteratorOptions !== undefined ? changeFeedIteratorOptions : {};\n validateChangeFeedIteratorOptions(cfOptions);\n const iterator = new ChangeFeedIteratorBuilder<T>(\n cfOptions,\n this.clientContext,\n this.container,\n this.partitionKeyRangeCache,\n );\n return iterator;\n }\n\n /**\n * Read all items.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsReadAll\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const { resources: containerList } = await container.items.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator<ItemDefinition>;\n /**\n * Read all items.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```ts snippet:ItemsReadAll\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const { resources: containerList } = await container.items.readAll().fetchAll();\n * ```\n */\n public readAll<T extends ItemDefinition>(options?: FeedOptions): QueryIterator<T>;\n public readAll<T extends ItemDefinition>(options?: FeedOptions): QueryIterator<T> {\n return this.query<T>(\"SELECT * from c\", options);\n }\n\n /**\n * Create an item.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - Represents the body of the item. Can contain any number of user defined properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Create an item.\n * ```ts snippet:ContainerItems\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const { resource: createdItem } = await container.items.create({\n * id: \"<item id>\",\n * properties: {},\n * });\n * ```\n */\n public async create<T extends ItemDefinition = any>(\n body: T,\n options: RequestOptions = {},\n ): Promise<ItemResponse<T>> {\n // Generate random document id if the id is missing in the payload and\n // options.disableAutomaticIdGeneration != true\n\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if ((body.id === undefined || body.id === \"\") && !options.disableAutomaticIdGeneration) {\n body.id = randomUUID();\n }\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n let partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n let response: Response<T & Resource>;\n try {\n if (this.clientContext.enableEncryption) {\n await this.container.checkAndInitializeEncryption();\n options.containerRid = this.container._rid;\n // returns copy to avoid encryption of original body passed\n body = copyObject(body);\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n );\n const { body: encryptedBody, propertiesEncryptedCount } =\n await this.container.encryptionProcessor.encrypt(body);\n body = encryptedBody;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n propertiesEncryptedCount,\n );\n\n partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n }\n const err = {};\n if (!isItemResourceValid(body, err)) {\n throw err;\n }\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n\n const isPartitionLevelFailOverEnabled =\n this.clientContext.isPartitionLevelFailOverEnabled();\n const partitionKeyRangeId = await computePartitionKeyRangeId(\n diagnosticNode,\n partitionKey,\n this.partitionKeyRangeCache,\n isPartitionLevelFailOverEnabled,\n this.container,\n partitionKeyDefinition,\n );\n\n response = await this.clientContext.create<T>({\n body,\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n diagnosticNode,\n options,\n partitionKey,\n partitionKeyRangeId,\n });\n } catch (error: any) {\n if (this.clientContext.enableEncryption) {\n // Todo: internally retry post policy refresh\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n throw error;\n }\n\n if (this.clientContext.enableEncryption) {\n // try block for decrypting response. This is done so that we can throw special error message in case of decryption failure\n try {\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n const { body: decryptedResult, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(response.result);\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n propertiesDecryptedCount,\n );\n response.result = decryptedResult;\n partitionKey = extractPartitionKeys(response.result, partitionKeyDefinition);\n } catch (error) {\n const decryptionError = new ErrorResponse(\n `Item creation was successful but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n }\n const ref = new Item(\n this.container,\n (response.result as any).id,\n this.clientContext,\n partitionKey,\n );\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Upsert an item.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - Represents the body of the item. Can contain any number of user defined properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n */\n public async upsert(\n body: unknown,\n options?: RequestOptions,\n ): Promise<ItemResponse<ItemDefinition>>;\n /**\n * Upsert an item.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - Represents the body of the item. Can contain any number of user defined properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Upsert an item.\n * ```ts snippet:ItemsUpsert\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const { resource: createdItem1 } = await container.items.create({\n * id: \"<item id 1>\",\n * properties: {},\n * });\n *\n * const { resource: upsertItem1 } = await container.items.upsert({\n * id: \"<item id 1>\",\n * updated_properties: {},\n * });\n *\n * const { resource: upsertItem2 } = await container.items.upsert({\n * id: \"<item id 2>\",\n * properties: {},\n * });\n * ```\n */\n public async upsert<T extends ItemDefinition>(\n body: T,\n options?: RequestOptions,\n ): Promise<ItemResponse<T>>;\n public async upsert<T extends ItemDefinition>(\n body: T,\n options: RequestOptions = {},\n ): Promise<ItemResponse<T>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n // Generate random document id if the id is missing in the payload and\n // options.disableAutomaticIdGeneration != true\n if ((body.id === undefined || body.id === \"\") && !options.disableAutomaticIdGeneration) {\n body.id = randomUUID();\n }\n\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n let partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n let response: Response<T & Resource>;\n try {\n if (this.clientContext.enableEncryption) {\n // returns copy to avoid encryption of original body passed\n body = copyObject(body);\n options = options || {};\n await this.container.checkAndInitializeEncryption();\n options.containerRid = this.container._rid;\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n );\n const { body: encryptedBody, propertiesEncryptedCount } =\n await this.container.encryptionProcessor.encrypt(body);\n body = encryptedBody;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n propertiesEncryptedCount,\n );\n partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n }\n\n const err = {};\n if (!isItemResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n\n const isPartitionLevelFailOverEnabled =\n this.clientContext.isPartitionLevelFailOverEnabled();\n const partitionKeyRangeId = await computePartitionKeyRangeId(\n diagnosticNode,\n partitionKey,\n this.partitionKeyRangeCache,\n isPartitionLevelFailOverEnabled,\n this.container,\n partitionKeyDefinition,\n );\n\n response = await this.clientContext.upsert<T>({\n body,\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n options,\n partitionKey,\n diagnosticNode,\n partitionKeyRangeId,\n });\n } catch (error: any) {\n if (this.clientContext.enableEncryption) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n throw error;\n }\n if (this.clientContext.enableEncryption) {\n try {\n // try block for decrypting response. This is done so that we can throw special error message in case of decryption failure\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n const { body: decryptedResult, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(response.result);\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n propertiesDecryptedCount,\n );\n response.result = decryptedResult;\n partitionKey = extractPartitionKeys(response.result, partitionKeyDefinition);\n } catch (error) {\n const decryptionError = new ErrorResponse(\n `Item upsert was successful but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n }\n\n const ref = new Item(\n this.container,\n (response.result as any).id,\n this.clientContext,\n partitionKey,\n );\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Execute bulk operations on items.\n * @param operations - List of operations\n * @param options - used for modifying the request\n * @returns list of operation results corresponding to the operations\n *\n * @example\n * ```ts snippet:ItemsExecuteBulkOperations\n * import { CosmosClient, OperationInput } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * const operations: OperationInput[] = [\n * {\n * operationType: \"Create\",\n * resourceBody: { id: \"doc1\", name: \"sample\", key: \"A\" },\n * },\n * {\n * operationType: \"Upsert\",\n * partitionKey: \"A\",\n * resourceBody: { id: \"doc2\", name: \"other\", key: \"A\" },\n * },\n * ];\n *\n * await container.items.executeBulkOperations(operations);\n * ```\n */\n public async executeBulkOperations(\n operations: OperationInput[],\n options: RequestOptions = {},\n ): Promise<BulkOperationResult[]> {\n const bulkHelper = new BulkHelper(\n this.container,\n this.clientContext,\n this.partitionKeyRangeCache,\n options,\n );\n return bulkHelper.execute(operations);\n }\n\n /**\n * Execute bulk operations on items.\n * @deprecated Use `executeBulkOperations` instead.\n *\n * Bulk takes an array of Operations which are typed based on what the operation does.\n * The choices are: Create, Upsert, Read, Replace, and Delete\n *\n * Usage example:\n * ```ts snippet:ItemsBulk\n * import { CosmosClient, OperationInput } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * // partitionKey is optional at the top level if present in the resourceBody\n * const operations: OperationInput[] = [\n * {\n * operationType: \"Create\",\n * resourceBody: { id: \"doc1\", name: \"sample\", key: \"A\" },\n * },\n * {\n * operationType: \"Upsert\",\n * partitionKey: \"A\",\n * resourceBody: { id: \"doc2\", name: \"other\", key: \"A\" },\n * },\n * ];\n *\n * await container.items.bulk(operations);\n * ```\n *\n * @param operations - List of operations. Limit 100\n * @param bulkOptions - Optional options object to modify bulk behavior. Pass \\{ continueOnError: false \\} to stop executing operations when one fails. (Defaults to true)\n * @param options - Used for modifying the request.\n */\n public async bulk(\n operations: OperationInput[],\n bulkOptions?: BulkOptions,\n options?: RequestOptions,\n ): Promise<BulkOperationResponse> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const partitionKeyRanges = (\n await this.partitionKeyRangeCache.onCollectionRoutingMap(this.container.url, diagnosticNode)\n ).getOrderedParitionKeyRanges();\n\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n\n if (this.clientContext.enableEncryption) {\n // returns copy to avoid encryption of original operations body passed\n operations = copyObject(operations);\n options = options || {};\n await this.container.checkAndInitializeEncryption();\n options.containerRid = this.container._rid;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsEncryptOperation);\n const { operations: encryptedOperations, totalPropertiesEncryptedCount } =\n await this.bulkBatchEncryptionHelper(operations);\n operations = encryptedOperations;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n totalPropertiesEncryptedCount,\n );\n }\n\n const batches: Batch[] = partitionKeyRanges.map((keyRange: PartitionKeyRange) => {\n return {\n min: keyRange.minInclusive,\n max: keyRange.maxExclusive,\n rangeId: keyRange.id,\n indexes: [] as number[],\n operations: [] as Operation[],\n };\n });\n\n this.groupOperationsBasedOnPartitionKey(operations, partitionKeyDefinition, options, batches);\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n\n const orderedResponses: OperationResponse[] = [];\n // split batches based on cumulative size of operations\n const batchMap = batches\n .filter((batch: Batch) => batch.operations.length)\n .flatMap((batch: Batch) => splitBatchBasedOnBodySize(batch));\n\n await Promise.all(\n this.executeBatchOperations(\n batchMap,\n path,\n bulkOptions,\n options,\n diagnosticNode,\n orderedResponses,\n partitionKeyDefinition,\n ),\n );\n const response: any = orderedResponses;\n response.diagnostics = diagnosticNode.toDiagnostic(this.clientContext.getClientConfig());\n return response;\n }, this.clientContext);\n }\n\n private executeBatchOperations(\n batchMap: Batch[],\n path: string,\n bulkOptions: BulkOptions,\n options: RequestOptions,\n diagnosticNode: DiagnosticNodeInternal,\n orderedResponses: OperationResponse[],\n partitionKeyDefinition: PartitionKeyDefinition,\n ): Promise<void>[] {\n return batchMap.map(async (batch: Batch) => {\n if (batch.operations.length > 100) {\n throw new Error(\"Cannot run bulk request with more than 100 operations per partition\");\n }\n let response: Response<OperationResponse[]>;\n try {\n response = await addDiagnosticChild(\n async (childNode: DiagnosticNodeInternal) =>\n this.clientContext.bulk({\n body: batch.operations,\n partitionKeyRangeId: batch.rangeId,\n path,\n resourceId: this.container.url,\n bulkOptions,\n options,\n diagnosticNode: childNode,\n }),\n diagnosticNode,\n DiagnosticNodeType.BATCH_REQUEST,\n );\n response.result.forEach((operationResponse: OperationResponse, index: number) => {\n orderedResponses[batch.indexes[index]] = operationResponse;\n });\n } catch (err: any) {\n if (this.clientContext.enableEncryption) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(err);\n }\n // In the case of 410 errors, we need to recompute the partition key ranges\n // and redo the batch request, however, 410 errors occur for unsupported\n // partition key types as well since we don't support them, so for now we throw\n if (err.code === StatusCodes.Gone) {\n const isPartitionSplit =\n err.substatus === SubStatusCodes.PartitionKeyRangeGone ||\n err.substatus === SubStatusCodes.CompletingSplit;\n\n if (isPartitionSplit) {\n const queryRange = new QueryRange(batch.min, batch.max, true, false);\n const overlappingRanges = await this.partitionKeyRangeCache.getOverlappingRanges(\n this.container.url,\n queryRange,\n diagnosticNode,\n true,\n );\n if (overlappingRanges.length < 1) {\n throw new Error(\"Partition split/merge detected but no overlapping ranges found.\");\n }\n // Handles both merge (overlappingRanges.length === 1) and split (overlappingRanges.length > 1) cases.\n if (overlappingRanges.length >= 1) {\n // const splitBatches: Batch[] = [];\n const newBatches: Batch[] = this.createNewBatches(\n overlappingRanges,\n batch,\n partitionKeyDefinition,\n );\n\n await Promise.all(\n this.executeBatchOperations(\n newBatches,\n path,\n bulkOptions,\n options,\n diagnosticNode,\n orderedResponses,\n partitionKeyDefinition,\n ),\n );\n }\n } else {\n throw new Error(\n \"Partition key error. An operation has an unsupported partitionKey type\" +\n err.message,\n );\n }\n } else {\n throw new Error(`Bulk request errored with: ${err.message}`);\n }\n }\n if (response) {\n try {\n if (this.clientContext.enableEncryption) {\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n let count = 0;\n for (const result of response.result) {\n if (result.resourceBody) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(result.resourceBody);\n result.resourceBody = body;\n count += propertiesDecryptedCount;\n }\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n } catch (error) {\n const decryptionError = new ErrorResponse(\n `Batch response was received but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n response.result.forEach((operationResponse: OperationResponse, index: number) => {\n orderedResponses[batch.indexes[index]] = operationResponse;\n });\n }\n });\n }\n\n /**\n * Function to create new batches based of partition key Ranges.\n *\n * @param overlappingRanges - Overlapping partition key ranges.\n * @param batch - Batch to be split.\n * @param partitionKeyDefinition - PartitionKey definition of container.\n * @returns Array of new batches.\n */\n private createNewBatches(\n overlappingRanges: PartitionKeyRange[],\n batch: Batch,\n partitionKeyDefinition: PartitionKeyDefinition,\n ): Batch[] {\n const newBatches: Batch[] = overlappingRanges.map((keyRange: PartitionKeyRange) => {\n return {\n min: keyRange.minInclusive,\n max: keyRange.maxExclusive,\n rangeId: keyRange.id,\n indexes: [] as number[],\n operations: [] as Operation[],\n };\n });\n let indexValue = 0;\n batch.operations.forEach((operation) => {\n const partitionKey = JSON.parse(operation.partitionKey);\n const hashed = hashPartitionKey(\n assertNotUndefined(\n partitionKey,\n \"undefined value for PartitionKey is not expected during grouping of bulk operations.\",\n ),\n partitionKeyDefinition,\n );\n const batchForKey = assertNotUndefined(\n newBatches.find((newBatch: Batch) => {\n return isKeyInRange(newBatch.min, newBatch.max, hashed);\n }),\n \"No suitable Batch found.\",\n );\n batchForKey.operations.push(operation);\n batchForKey.indexes.push(batch.indexes[indexValue]);\n indexValue++;\n });\n return newBatches;\n }\n\n /**\n * Function to create batches based of partition key Ranges.\n * @param operations - operations to group\n * @param partitionDefinition - PartitionKey definition of container.\n * @param options - Request options for bulk request.\n * @param batches - Groups to be filled with operations.\n */\n private groupOperationsBasedOnPartitionKey(\n operations: OperationInput[],\n partitionDefinition: PartitionKeyDefinition,\n options: RequestOptions | undefined,\n batches: Batch[],\n ) {\n operations.forEach((operationInput, index: number) => {\n const { operation, partitionKey } = prepareOperations(\n operationInput,\n partitionDefinition,\n options,\n );\n const hashed = hashPartitionKey(\n assertNotUndefined(\n partitionKey,\n \"undefined value for PartitionKey is not expected during grouping of bulk operations.\",\n ),\n partitionDefinition,\n );\n const batchForKey = assertNotUndefined(\n batches.find((batch: Batch) => {\n return isKeyInRange(batch.min, batch.max, hashed);\n }),\n \"No suitable Batch found.\",\n );\n batchForKey.operations.push(operation);\n batchForKey.indexes.push(index);\n });\n }\n\n /**\n * Execute transactional batch operations on items.\n *\n * Batch takes an array of Operations which are typed based on what the operation does. Batch is transactional and will rollback all operations if one fails.\n * The choices are: Create, Upsert, Read, Replace, and Delete\n *\n * Usage example:\n * ```ts snippet:ItemsBatch\n * import { CosmosClient, OperationInput } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n *\n * const { database } = await client.databases.createIfNotExists({ id: \"Test Database\" });\n *\n * const { container } = await database.containers.createIfNotExists({ id: \"Test Container\" });\n *\n * // The partitionKey is a required second argument. If it’s undefined, it defaults to the expected partition key format.\n * const operations: OperationInput[] = [\n * {\n * operationType: \"Create\",\n * resourceBody: { id: \"doc1\", name: \"sample\", key: \"A\" },\n * },\n * {\n * operationType: \"Upsert\",\n * resourceBody: { id: \"doc2\", name: \"other\", key: \"A\" },\n * },\n * ];\n *\n * await container.items.batch(operations, \"A\");\n * ```\n *\n * @param operations - List of operations. Limit 100\n * @param options - Used for modifying the request\n */\n public async batch(\n operations: OperationInput[],\n partitionKey?: PartitionKey,\n options?: RequestOptions,\n ): Promise<Response<OperationResponse[]>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n operations.map((operation) => decorateBatchOperation(operation, options));\n partitionKey = await setPartitionKeyIfUndefined(diagnosticNode, this.container, partitionKey);\n const path = getPathFromLink(this.container.url, ResourceType.item);\n\n if (operations.length > 100) {\n throw new Error(\"Cannot run batch request with more than 100 operations per partition\");\n }\n for (const operationInput of operations) {\n if (operationInput && operationInput.partitionKey !== undefined) {\n operationInput.partitionKey = JSON.stringify(\n convertToInternalPartitionKey(operationInput.partitionKey),\n );\n }\n }\n let response: Response<OperationResponse[]>;\n try {\n if (this.clientContext.enableEncryption) {\n // returns copy to avoid encryption of original operations body passed\n operations = copyObject(operations);\n options = options || {};\n await this.container.checkAndInitializeEncryption();\n options.containerRid = this.container._rid;\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n );\n if (partitionKey) {\n const partitionKeyInternal = convertToInternalPartitionKey(partitionKey);\n const { partitionKeyList, encryptedCount } =\n await this.container.encryptionProcessor.getEncryptedPartitionKeyValue(\n partitionKeyInternal,\n );\n partitionKey = partitionKeyList;\n count += encryptedCount;\n }\n const { operations: encryptedOperations, totalPropertiesEncryptedCount } =\n await this.bulkBatchEncryptionHelper(operations);\n operations = encryptedOperations;\n count += totalPropertiesEncryptedCount;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n count,\n );\n }\n\n const isPartitionLevelFailOverEnabled =\n this.clientContext.isPartitionLevelFailOverEnabled();\n const partitionKeyRangeId = await computePartitionKeyRangeId(\n diagnosticNode,\n partitionKey,\n this.partitionKeyRangeCache,\n isPartitionLevelFailOverEnabled,\n this.container,\n );\n\n response = await this.clientContext.batch({\n body: operations,\n partitionKey,\n path,\n resourceId: this.container.url,\n options,\n diagnosticNode,\n partitionKeyRangeId,\n });\n } catch (err: any) {\n if (this.clientContext.enableEncryption) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(err);\n }\n throw new Error(`Batch request error: ${err.message}`);\n }\n if (this.clientContext.enableEncryption) {\n try {\n diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n let count = 0;\n for (const result of response.result) {\n if (result.resourceBody) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(result.resourceBody);\n result.resourceBody = body;\n count += propertiesDecryptedCount;\n }\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n } catch (error) {\n const decryptionError = new ErrorResponse(\n `Batch response was received but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n }\n return response;\n }, this.clientContext);\n }\n\n private async bulkBatchEncryptionHelper(\n operations: OperationInput[],\n ): Promise<{ operations: OperationInput[]; totalPropertiesEncryptedCount: number }> {\n let totalPropertiesEncryptedCount = 0;\n const encryptedOperations: OperationInput[] = [];\n for (const operation of operations) {\n const { operation: encryptedOp, totalPropertiesEncryptedCount: updatedCount } =\n await encryptOperationInput(\n this.container.encryptionProcessor,\n operation,\n totalPropertiesEncryptedCount,\n );\n totalPropertiesEncryptedCount = updatedCount;\n encryptedOperations.push(encryptedOp);\n }\n return { operations: encryptedOperations, totalPropertiesEncryptedCount };\n }\n}\n"]}
@@ -148,6 +148,7 @@ export declare const Constants: {
148
148
  WriteRequestFailureCountThreshold: number;
149
149
  ConsecutiveFailureCountResetIntervalInMS: number;
150
150
  ENABLE_MULTIPLE_WRITABLE_LOCATIONS: string;
151
+ EnablePerPartitionFailover: string;
151
152
  DefaultUnavailableLocationExpirationTimeMS: number;
152
153
  ThrottleRetryCount: string;
153
154
  ThrottleRetryWaitTimeInMs: string;
@@ -213,6 +214,9 @@ export declare const Constants: {
213
214
  EncryptionCacheRefreshIntervalInMs: number;
214
215
  RequestTimeoutForReadsInMs: number;
215
216
  };
217
+ export declare const AAD_DEFAULT_SCOPE = "https://cosmos.azure.com/.default";
218
+ export declare const AAD_AUTH_PREFIX = "type=aad&ver=1.0&sig=";
219
+ export declare const AAD_RESOURCE_NOT_FOUND_ERROR = "AADSTS500011";
216
220
  /**
217
221
  * @hidden
218
222
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/common/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/common/constants.ts"],"names":[],"mappings":"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"}
@@ -177,6 +177,7 @@ export const Constants = {
177
177
  ConsecutiveFailureCountResetIntervalInMS: 1000 * 60 * 1, // 1 minute
178
178
  // ServiceDocument Resource
179
179
  ENABLE_MULTIPLE_WRITABLE_LOCATIONS: "enableMultipleWriteLocations",
180
+ EnablePerPartitionFailover: "enablePerPartitionFailoverBehavior",
180
181
  // Background refresh time
181
182
  DefaultUnavailableLocationExpirationTimeMS: 5 * 60 * 1000,
182
183
  // Client generated retry count response header
@@ -187,7 +188,7 @@ export const Constants = {
187
188
  AzureNamespace: "Azure.Cosmos",
188
189
  AzurePackageName: "@azure/cosmos",
189
190
  SDKName: "azure-cosmos-js",
190
- SDKVersion: "4.5.1",
191
+ SDKVersion: "4.6.0",
191
192
  // Diagnostics
192
193
  CosmosDbDiagnosticLevelEnvVarName: "AZURE_COSMOSDB_DIAGNOSTICS_LEVEL",
193
194
  // Bulk Operations
@@ -257,6 +258,9 @@ export const Constants = {
257
258
  EncryptionCacheRefreshIntervalInMs: 60000, // 1 minute
258
259
  RequestTimeoutForReadsInMs: 2000, // 2 seconds
259
260
  };
261
+ export const AAD_DEFAULT_SCOPE = "https://cosmos.azure.com/.default";
262
+ export const AAD_AUTH_PREFIX = "type=aad&ver=1.0&sig=";
263
+ export const AAD_RESOURCE_NOT_FOUND_ERROR = "AADSTS500011";
260
264
  /**
261
265
  * @hidden
262
266
  */