@azure/cosmos 4.4.1 → 4.5.0-alpha.20250717.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/dist/browser/ClientContext.d.ts +19 -10
  2. package/dist/browser/ClientContext.d.ts.map +1 -1
  3. package/dist/browser/ClientContext.js +30 -11
  4. package/dist/browser/ClientContext.js.map +1 -1
  5. package/dist/browser/CosmosClient.d.ts.map +1 -1
  6. package/dist/browser/CosmosClient.js +10 -2
  7. package/dist/browser/CosmosClient.js.map +1 -1
  8. package/dist/browser/PartitionKeyRangeFailoverInfo.d.ts +49 -0
  9. package/dist/browser/PartitionKeyRangeFailoverInfo.d.ts.map +1 -0
  10. package/dist/browser/PartitionKeyRangeFailoverInfo.js +130 -0
  11. package/dist/browser/PartitionKeyRangeFailoverInfo.js.map +1 -0
  12. package/dist/browser/client/ClientUtils.d.ts +3 -1
  13. package/dist/browser/client/ClientUtils.d.ts.map +1 -1
  14. package/dist/browser/client/ClientUtils.js +10 -0
  15. package/dist/browser/client/ClientUtils.js.map +1 -1
  16. package/dist/browser/client/Item/Item.d.ts.map +1 -1
  17. package/dist/browser/client/Item/Item.js +13 -0
  18. package/dist/browser/client/Item/Item.js.map +1 -1
  19. package/dist/browser/client/Item/Items.d.ts +1 -0
  20. package/dist/browser/client/Item/Items.d.ts.map +1 -1
  21. package/dist/browser/client/Item/Items.js +20 -3
  22. package/dist/browser/client/Item/Items.js.map +1 -1
  23. package/dist/browser/common/constants.d.ts +20 -0
  24. package/dist/browser/common/constants.d.ts.map +1 -1
  25. package/dist/browser/common/constants.js +23 -1
  26. package/dist/browser/common/constants.js.map +1 -1
  27. package/dist/browser/common/platform.d.ts +6 -1
  28. package/dist/browser/common/platform.d.ts.map +1 -1
  29. package/dist/browser/common/platform.js +23 -4
  30. package/dist/browser/common/platform.js.map +1 -1
  31. package/dist/browser/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
  32. package/dist/browser/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
  33. package/dist/browser/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  34. package/dist/browser/documents/ConnectionPolicy.d.ts +6 -0
  35. package/dist/browser/documents/ConnectionPolicy.d.ts.map +1 -1
  36. package/dist/browser/documents/ConnectionPolicy.js +2 -0
  37. package/dist/browser/documents/ConnectionPolicy.js.map +1 -1
  38. package/dist/browser/documents/DatabaseAccount.d.ts.map +1 -1
  39. package/dist/browser/documents/DatabaseAccount.js +3 -0
  40. package/dist/browser/documents/DatabaseAccount.js.map +1 -1
  41. package/dist/browser/documents/PartitionKeyDefinition.d.ts +1 -1
  42. package/dist/browser/documents/PartitionKeyDefinition.js.map +1 -1
  43. package/dist/browser/extractPartitionKey.d.ts.map +1 -1
  44. package/dist/browser/extractPartitionKey.js +33 -20
  45. package/dist/browser/extractPartitionKey.js.map +1 -1
  46. package/dist/browser/globalEndpointManager.d.ts +6 -0
  47. package/dist/browser/globalEndpointManager.d.ts.map +1 -1
  48. package/dist/browser/globalEndpointManager.js +9 -4
  49. package/dist/browser/globalEndpointManager.js.map +1 -1
  50. package/dist/browser/globalPartitionEndpointManager.d.ts +79 -0
  51. package/dist/browser/globalPartitionEndpointManager.d.ts.map +1 -0
  52. package/dist/browser/globalPartitionEndpointManager.js +279 -0
  53. package/dist/browser/globalPartitionEndpointManager.js.map +1 -0
  54. package/dist/browser/queryExecutionContext/Aggregators/index.d.ts.map +1 -1
  55. package/dist/browser/queryExecutionContext/Aggregators/index.js +1 -0
  56. package/dist/browser/queryExecutionContext/Aggregators/index.js.map +1 -1
  57. package/dist/browser/queryExecutionContext/documentProducer.d.ts +2 -3
  58. package/dist/browser/queryExecutionContext/documentProducer.d.ts.map +1 -1
  59. package/dist/browser/queryExecutionContext/documentProducer.js +16 -21
  60. package/dist/browser/queryExecutionContext/documentProducer.js.map +1 -1
  61. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.d.ts +3 -1
  62. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.d.ts.map +1 -1
  63. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js +10 -2
  64. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  65. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.d.ts.map +1 -1
  66. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js +2 -1
  67. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  68. package/dist/browser/queryIterator.d.ts.map +1 -1
  69. package/dist/browser/queryIterator.js +2 -3
  70. package/dist/browser/queryIterator.js.map +1 -1
  71. package/dist/browser/request/ErrorResponse.d.ts +1 -1
  72. package/dist/browser/request/ErrorResponse.d.ts.map +1 -1
  73. package/dist/browser/request/ErrorResponse.js.map +1 -1
  74. package/dist/browser/request/RequestContext.d.ts +5 -0
  75. package/dist/browser/request/RequestContext.d.ts.map +1 -1
  76. package/dist/browser/request/RequestContext.js.map +1 -1
  77. package/dist/browser/request/RequestHandler.d.ts.map +1 -1
  78. package/dist/browser/request/RequestHandler.js +14 -4
  79. package/dist/browser/request/RequestHandler.js.map +1 -1
  80. package/dist/browser/retry/RetryPolicy.d.ts +2 -2
  81. package/dist/browser/retry/RetryPolicy.d.ts.map +1 -1
  82. package/dist/browser/retry/RetryPolicy.js.map +1 -1
  83. package/dist/browser/retry/defaultRetryPolicy.d.ts.map +1 -1
  84. package/dist/browser/retry/defaultRetryPolicy.js +4 -8
  85. package/dist/browser/retry/defaultRetryPolicy.js.map +1 -1
  86. package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts +5 -3
  87. package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  88. package/dist/browser/retry/endpointDiscoveryRetryPolicy.js +9 -2
  89. package/dist/browser/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  90. package/dist/browser/retry/retryUtility.d.ts.map +1 -1
  91. package/dist/browser/retry/retryUtility.js +11 -5
  92. package/dist/browser/retry/retryUtility.js.map +1 -1
  93. package/dist/browser/retry/timeoutFailoverRetryPolicy.d.ts +6 -3
  94. package/dist/browser/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  95. package/dist/browser/retry/timeoutFailoverRetryPolicy.js +12 -4
  96. package/dist/browser/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  97. package/dist/browser/routing/partitionKeyRangeCache.d.ts.map +1 -1
  98. package/dist/browser/routing/partitionKeyRangeCache.js +11 -0
  99. package/dist/browser/routing/partitionKeyRangeCache.js.map +1 -1
  100. package/dist/browser/utils/checkURL.js +6 -0
  101. package/dist/browser/utils/checkURL.js.map +1 -1
  102. package/dist/browser/utils/hashing/hash.d.ts +2 -0
  103. package/dist/browser/utils/hashing/hash.d.ts.map +1 -1
  104. package/dist/browser/utils/hashing/hash.js +19 -0
  105. package/dist/browser/utils/hashing/hash.js.map +1 -1
  106. package/dist/commonjs/ClientContext.d.ts +19 -10
  107. package/dist/commonjs/ClientContext.d.ts.map +1 -1
  108. package/dist/commonjs/ClientContext.js +30 -11
  109. package/dist/commonjs/ClientContext.js.map +1 -1
  110. package/dist/commonjs/CosmosClient.d.ts.map +1 -1
  111. package/dist/commonjs/CosmosClient.js +10 -2
  112. package/dist/commonjs/CosmosClient.js.map +1 -1
  113. package/dist/commonjs/PartitionKeyRangeFailoverInfo.d.ts +49 -0
  114. package/dist/commonjs/PartitionKeyRangeFailoverInfo.d.ts.map +1 -0
  115. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js +135 -0
  116. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js.map +1 -0
  117. package/dist/commonjs/client/ClientUtils.d.ts +3 -1
  118. package/dist/commonjs/client/ClientUtils.d.ts.map +1 -1
  119. package/dist/commonjs/client/ClientUtils.js +11 -0
  120. package/dist/commonjs/client/ClientUtils.js.map +1 -1
  121. package/dist/commonjs/client/Item/Item.d.ts.map +1 -1
  122. package/dist/commonjs/client/Item/Item.js +13 -0
  123. package/dist/commonjs/client/Item/Item.js.map +1 -1
  124. package/dist/commonjs/client/Item/Items.d.ts +1 -0
  125. package/dist/commonjs/client/Item/Items.d.ts.map +1 -1
  126. package/dist/commonjs/client/Item/Items.js +18 -1
  127. package/dist/commonjs/client/Item/Items.js.map +1 -1
  128. package/dist/commonjs/common/constants.d.ts +20 -0
  129. package/dist/commonjs/common/constants.d.ts.map +1 -1
  130. package/dist/commonjs/common/constants.js +24 -2
  131. package/dist/commonjs/common/constants.js.map +1 -1
  132. package/dist/commonjs/common/platform.d.ts +6 -1
  133. package/dist/commonjs/common/platform.d.ts.map +1 -1
  134. package/dist/commonjs/common/platform.js +23 -3
  135. package/dist/commonjs/common/platform.js.map +1 -1
  136. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
  137. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
  138. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  139. package/dist/commonjs/documents/ConnectionPolicy.d.ts +6 -0
  140. package/dist/commonjs/documents/ConnectionPolicy.d.ts.map +1 -1
  141. package/dist/commonjs/documents/ConnectionPolicy.js +2 -0
  142. package/dist/commonjs/documents/ConnectionPolicy.js.map +1 -1
  143. package/dist/commonjs/documents/DatabaseAccount.d.ts.map +1 -1
  144. package/dist/commonjs/documents/DatabaseAccount.js +3 -0
  145. package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
  146. package/dist/commonjs/documents/PartitionKeyDefinition.d.ts +1 -1
  147. package/dist/commonjs/documents/PartitionKeyDefinition.js.map +1 -1
  148. package/dist/commonjs/extractPartitionKey.d.ts.map +1 -1
  149. package/dist/commonjs/extractPartitionKey.js +33 -20
  150. package/dist/commonjs/extractPartitionKey.js.map +1 -1
  151. package/dist/commonjs/globalEndpointManager.d.ts +6 -0
  152. package/dist/commonjs/globalEndpointManager.d.ts.map +1 -1
  153. package/dist/commonjs/globalEndpointManager.js +10 -5
  154. package/dist/commonjs/globalEndpointManager.js.map +1 -1
  155. package/dist/commonjs/globalPartitionEndpointManager.d.ts +79 -0
  156. package/dist/commonjs/globalPartitionEndpointManager.d.ts.map +1 -0
  157. package/dist/commonjs/globalPartitionEndpointManager.js +283 -0
  158. package/dist/commonjs/globalPartitionEndpointManager.js.map +1 -0
  159. package/dist/commonjs/queryExecutionContext/Aggregators/index.d.ts.map +1 -1
  160. package/dist/commonjs/queryExecutionContext/Aggregators/index.js +1 -0
  161. package/dist/commonjs/queryExecutionContext/Aggregators/index.js.map +1 -1
  162. package/dist/commonjs/queryExecutionContext/documentProducer.d.ts +2 -3
  163. package/dist/commonjs/queryExecutionContext/documentProducer.d.ts.map +1 -1
  164. package/dist/commonjs/queryExecutionContext/documentProducer.js +15 -20
  165. package/dist/commonjs/queryExecutionContext/documentProducer.js.map +1 -1
  166. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.d.ts +3 -1
  167. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.d.ts.map +1 -1
  168. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js +10 -2
  169. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  170. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.d.ts.map +1 -1
  171. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js +2 -1
  172. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  173. package/dist/commonjs/queryIterator.d.ts.map +1 -1
  174. package/dist/commonjs/queryIterator.js +2 -3
  175. package/dist/commonjs/queryIterator.js.map +1 -1
  176. package/dist/commonjs/request/ErrorResponse.d.ts +1 -1
  177. package/dist/commonjs/request/ErrorResponse.d.ts.map +1 -1
  178. package/dist/commonjs/request/ErrorResponse.js.map +1 -1
  179. package/dist/commonjs/request/RequestContext.d.ts +5 -0
  180. package/dist/commonjs/request/RequestContext.d.ts.map +1 -1
  181. package/dist/commonjs/request/RequestContext.js.map +1 -1
  182. package/dist/commonjs/request/RequestHandler.d.ts.map +1 -1
  183. package/dist/commonjs/request/RequestHandler.js +12 -2
  184. package/dist/commonjs/request/RequestHandler.js.map +1 -1
  185. package/dist/commonjs/request/defaultAgent.js +4 -4
  186. package/dist/commonjs/request/defaultAgent.js.map +1 -1
  187. package/dist/commonjs/retry/RetryPolicy.d.ts +2 -2
  188. package/dist/commonjs/retry/RetryPolicy.d.ts.map +1 -1
  189. package/dist/commonjs/retry/RetryPolicy.js.map +1 -1
  190. package/dist/commonjs/retry/defaultRetryPolicy.d.ts.map +1 -1
  191. package/dist/commonjs/retry/defaultRetryPolicy.js +3 -7
  192. package/dist/commonjs/retry/defaultRetryPolicy.js.map +1 -1
  193. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts +5 -3
  194. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  195. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +9 -2
  196. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  197. package/dist/commonjs/retry/retryUtility.d.ts.map +1 -1
  198. package/dist/commonjs/retry/retryUtility.js +11 -5
  199. package/dist/commonjs/retry/retryUtility.js.map +1 -1
  200. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.d.ts +6 -3
  201. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  202. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +12 -4
  203. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  204. package/dist/commonjs/routing/partitionKeyRangeCache.d.ts.map +1 -1
  205. package/dist/commonjs/routing/partitionKeyRangeCache.js +11 -0
  206. package/dist/commonjs/routing/partitionKeyRangeCache.js.map +1 -1
  207. package/dist/commonjs/tsdoc-metadata.json +1 -1
  208. package/dist/commonjs/utils/checkURL.js +7 -0
  209. package/dist/commonjs/utils/checkURL.js.map +1 -1
  210. package/dist/commonjs/utils/hashing/hash.d.ts +2 -0
  211. package/dist/commonjs/utils/hashing/hash.d.ts.map +1 -1
  212. package/dist/commonjs/utils/hashing/hash.js +20 -0
  213. package/dist/commonjs/utils/hashing/hash.js.map +1 -1
  214. package/dist/esm/ClientContext.d.ts +19 -10
  215. package/dist/esm/ClientContext.d.ts.map +1 -1
  216. package/dist/esm/ClientContext.js +30 -11
  217. package/dist/esm/ClientContext.js.map +1 -1
  218. package/dist/esm/CosmosClient.d.ts.map +1 -1
  219. package/dist/esm/CosmosClient.js +10 -2
  220. package/dist/esm/CosmosClient.js.map +1 -1
  221. package/dist/esm/PartitionKeyRangeFailoverInfo.d.ts +49 -0
  222. package/dist/esm/PartitionKeyRangeFailoverInfo.d.ts.map +1 -0
  223. package/dist/esm/PartitionKeyRangeFailoverInfo.js +130 -0
  224. package/dist/esm/PartitionKeyRangeFailoverInfo.js.map +1 -0
  225. package/dist/esm/client/ClientUtils.d.ts +3 -1
  226. package/dist/esm/client/ClientUtils.d.ts.map +1 -1
  227. package/dist/esm/client/ClientUtils.js +10 -0
  228. package/dist/esm/client/ClientUtils.js.map +1 -1
  229. package/dist/esm/client/Item/Item.d.ts.map +1 -1
  230. package/dist/esm/client/Item/Item.js +13 -0
  231. package/dist/esm/client/Item/Item.js.map +1 -1
  232. package/dist/esm/client/Item/Items.d.ts +1 -0
  233. package/dist/esm/client/Item/Items.d.ts.map +1 -1
  234. package/dist/esm/client/Item/Items.js +20 -3
  235. package/dist/esm/client/Item/Items.js.map +1 -1
  236. package/dist/esm/common/constants.d.ts +20 -0
  237. package/dist/esm/common/constants.d.ts.map +1 -1
  238. package/dist/esm/common/constants.js +23 -1
  239. package/dist/esm/common/constants.js.map +1 -1
  240. package/dist/esm/common/platform.d.ts +6 -1
  241. package/dist/esm/common/platform.d.ts.map +1 -1
  242. package/dist/esm/common/platform.js +23 -4
  243. package/dist/esm/common/platform.js.map +1 -1
  244. package/dist/esm/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
  245. package/dist/esm/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
  246. package/dist/esm/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  247. package/dist/esm/documents/ConnectionPolicy.d.ts +6 -0
  248. package/dist/esm/documents/ConnectionPolicy.d.ts.map +1 -1
  249. package/dist/esm/documents/ConnectionPolicy.js +2 -0
  250. package/dist/esm/documents/ConnectionPolicy.js.map +1 -1
  251. package/dist/esm/documents/DatabaseAccount.d.ts.map +1 -1
  252. package/dist/esm/documents/DatabaseAccount.js +3 -0
  253. package/dist/esm/documents/DatabaseAccount.js.map +1 -1
  254. package/dist/esm/documents/PartitionKeyDefinition.d.ts +1 -1
  255. package/dist/esm/documents/PartitionKeyDefinition.js.map +1 -1
  256. package/dist/esm/extractPartitionKey.d.ts.map +1 -1
  257. package/dist/esm/extractPartitionKey.js +33 -20
  258. package/dist/esm/extractPartitionKey.js.map +1 -1
  259. package/dist/esm/globalEndpointManager.d.ts +6 -0
  260. package/dist/esm/globalEndpointManager.d.ts.map +1 -1
  261. package/dist/esm/globalEndpointManager.js +9 -4
  262. package/dist/esm/globalEndpointManager.js.map +1 -1
  263. package/dist/esm/globalPartitionEndpointManager.d.ts +79 -0
  264. package/dist/esm/globalPartitionEndpointManager.d.ts.map +1 -0
  265. package/dist/esm/globalPartitionEndpointManager.js +279 -0
  266. package/dist/esm/globalPartitionEndpointManager.js.map +1 -0
  267. package/dist/esm/queryExecutionContext/Aggregators/index.d.ts.map +1 -1
  268. package/dist/esm/queryExecutionContext/Aggregators/index.js +1 -0
  269. package/dist/esm/queryExecutionContext/Aggregators/index.js.map +1 -1
  270. package/dist/esm/queryExecutionContext/documentProducer.d.ts +2 -3
  271. package/dist/esm/queryExecutionContext/documentProducer.d.ts.map +1 -1
  272. package/dist/esm/queryExecutionContext/documentProducer.js +16 -21
  273. package/dist/esm/queryExecutionContext/documentProducer.js.map +1 -1
  274. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.d.ts +3 -1
  275. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.d.ts.map +1 -1
  276. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js +10 -2
  277. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  278. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.d.ts.map +1 -1
  279. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js +2 -1
  280. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  281. package/dist/esm/queryIterator.d.ts.map +1 -1
  282. package/dist/esm/queryIterator.js +2 -3
  283. package/dist/esm/queryIterator.js.map +1 -1
  284. package/dist/esm/request/ErrorResponse.d.ts +1 -1
  285. package/dist/esm/request/ErrorResponse.d.ts.map +1 -1
  286. package/dist/esm/request/ErrorResponse.js.map +1 -1
  287. package/dist/esm/request/RequestContext.d.ts +5 -0
  288. package/dist/esm/request/RequestContext.d.ts.map +1 -1
  289. package/dist/esm/request/RequestContext.js.map +1 -1
  290. package/dist/esm/request/RequestHandler.d.ts.map +1 -1
  291. package/dist/esm/request/RequestHandler.js +14 -4
  292. package/dist/esm/request/RequestHandler.js.map +1 -1
  293. package/dist/esm/request/defaultAgent.js +2 -2
  294. package/dist/esm/request/defaultAgent.js.map +1 -1
  295. package/dist/esm/retry/RetryPolicy.d.ts +2 -2
  296. package/dist/esm/retry/RetryPolicy.d.ts.map +1 -1
  297. package/dist/esm/retry/RetryPolicy.js.map +1 -1
  298. package/dist/esm/retry/defaultRetryPolicy.d.ts.map +1 -1
  299. package/dist/esm/retry/defaultRetryPolicy.js +4 -8
  300. package/dist/esm/retry/defaultRetryPolicy.js.map +1 -1
  301. package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts +5 -3
  302. package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  303. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js +9 -2
  304. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  305. package/dist/esm/retry/retryUtility.d.ts.map +1 -1
  306. package/dist/esm/retry/retryUtility.js +11 -5
  307. package/dist/esm/retry/retryUtility.js.map +1 -1
  308. package/dist/esm/retry/timeoutFailoverRetryPolicy.d.ts +6 -3
  309. package/dist/esm/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  310. package/dist/esm/retry/timeoutFailoverRetryPolicy.js +12 -4
  311. package/dist/esm/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  312. package/dist/esm/routing/partitionKeyRangeCache.d.ts.map +1 -1
  313. package/dist/esm/routing/partitionKeyRangeCache.js +11 -0
  314. package/dist/esm/routing/partitionKeyRangeCache.js.map +1 -1
  315. package/dist/esm/utils/checkURL.js +6 -0
  316. package/dist/esm/utils/checkURL.js.map +1 -1
  317. package/dist/esm/utils/hashing/hash.d.ts +2 -0
  318. package/dist/esm/utils/hashing/hash.d.ts.map +1 -1
  319. package/dist/esm/utils/hashing/hash.js +19 -0
  320. package/dist/esm/utils/hashing/hash.js.map +1 -1
  321. package/dist/react-native/ClientContext.d.ts +19 -10
  322. package/dist/react-native/ClientContext.d.ts.map +1 -1
  323. package/dist/react-native/ClientContext.js +30 -11
  324. package/dist/react-native/ClientContext.js.map +1 -1
  325. package/dist/react-native/CosmosClient.d.ts.map +1 -1
  326. package/dist/react-native/CosmosClient.js +10 -2
  327. package/dist/react-native/CosmosClient.js.map +1 -1
  328. package/dist/react-native/PartitionKeyRangeFailoverInfo.d.ts +49 -0
  329. package/dist/react-native/PartitionKeyRangeFailoverInfo.d.ts.map +1 -0
  330. package/dist/react-native/PartitionKeyRangeFailoverInfo.js +130 -0
  331. package/dist/react-native/PartitionKeyRangeFailoverInfo.js.map +1 -0
  332. package/dist/react-native/client/ClientUtils.d.ts +3 -1
  333. package/dist/react-native/client/ClientUtils.d.ts.map +1 -1
  334. package/dist/react-native/client/ClientUtils.js +10 -0
  335. package/dist/react-native/client/ClientUtils.js.map +1 -1
  336. package/dist/react-native/client/Item/Item.d.ts.map +1 -1
  337. package/dist/react-native/client/Item/Item.js +13 -0
  338. package/dist/react-native/client/Item/Item.js.map +1 -1
  339. package/dist/react-native/client/Item/Items.d.ts +1 -0
  340. package/dist/react-native/client/Item/Items.d.ts.map +1 -1
  341. package/dist/react-native/client/Item/Items.js +20 -3
  342. package/dist/react-native/client/Item/Items.js.map +1 -1
  343. package/dist/react-native/common/constants.d.ts +20 -0
  344. package/dist/react-native/common/constants.d.ts.map +1 -1
  345. package/dist/react-native/common/constants.js +23 -1
  346. package/dist/react-native/common/constants.js.map +1 -1
  347. package/dist/react-native/common/platform.d.ts +6 -1
  348. package/dist/react-native/common/platform.d.ts.map +1 -1
  349. package/dist/react-native/common/platform.js +23 -4
  350. package/dist/react-native/common/platform.js.map +1 -1
  351. package/dist/react-native/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
  352. package/dist/react-native/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
  353. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  354. package/dist/react-native/documents/ConnectionPolicy.d.ts +6 -0
  355. package/dist/react-native/documents/ConnectionPolicy.d.ts.map +1 -1
  356. package/dist/react-native/documents/ConnectionPolicy.js +2 -0
  357. package/dist/react-native/documents/ConnectionPolicy.js.map +1 -1
  358. package/dist/react-native/documents/DatabaseAccount.d.ts.map +1 -1
  359. package/dist/react-native/documents/DatabaseAccount.js +3 -0
  360. package/dist/react-native/documents/DatabaseAccount.js.map +1 -1
  361. package/dist/react-native/documents/PartitionKeyDefinition.d.ts +1 -1
  362. package/dist/react-native/documents/PartitionKeyDefinition.js.map +1 -1
  363. package/dist/react-native/extractPartitionKey.d.ts.map +1 -1
  364. package/dist/react-native/extractPartitionKey.js +33 -20
  365. package/dist/react-native/extractPartitionKey.js.map +1 -1
  366. package/dist/react-native/globalEndpointManager.d.ts +6 -0
  367. package/dist/react-native/globalEndpointManager.d.ts.map +1 -1
  368. package/dist/react-native/globalEndpointManager.js +9 -4
  369. package/dist/react-native/globalEndpointManager.js.map +1 -1
  370. package/dist/react-native/globalPartitionEndpointManager.d.ts +79 -0
  371. package/dist/react-native/globalPartitionEndpointManager.d.ts.map +1 -0
  372. package/dist/react-native/globalPartitionEndpointManager.js +279 -0
  373. package/dist/react-native/globalPartitionEndpointManager.js.map +1 -0
  374. package/dist/react-native/queryExecutionContext/Aggregators/index.d.ts.map +1 -1
  375. package/dist/react-native/queryExecutionContext/Aggregators/index.js +1 -0
  376. package/dist/react-native/queryExecutionContext/Aggregators/index.js.map +1 -1
  377. package/dist/react-native/queryExecutionContext/documentProducer.d.ts +2 -3
  378. package/dist/react-native/queryExecutionContext/documentProducer.d.ts.map +1 -1
  379. package/dist/react-native/queryExecutionContext/documentProducer.js +16 -21
  380. package/dist/react-native/queryExecutionContext/documentProducer.js.map +1 -1
  381. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.d.ts +3 -1
  382. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.d.ts.map +1 -1
  383. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js +10 -2
  384. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  385. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.d.ts.map +1 -1
  386. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js +2 -1
  387. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  388. package/dist/react-native/queryIterator.d.ts.map +1 -1
  389. package/dist/react-native/queryIterator.js +2 -3
  390. package/dist/react-native/queryIterator.js.map +1 -1
  391. package/dist/react-native/request/ErrorResponse.d.ts +1 -1
  392. package/dist/react-native/request/ErrorResponse.d.ts.map +1 -1
  393. package/dist/react-native/request/ErrorResponse.js.map +1 -1
  394. package/dist/react-native/request/RequestContext.d.ts +5 -0
  395. package/dist/react-native/request/RequestContext.d.ts.map +1 -1
  396. package/dist/react-native/request/RequestContext.js.map +1 -1
  397. package/dist/react-native/request/RequestHandler.d.ts.map +1 -1
  398. package/dist/react-native/request/RequestHandler.js +14 -4
  399. package/dist/react-native/request/RequestHandler.js.map +1 -1
  400. package/dist/react-native/request/defaultAgent.js +2 -2
  401. package/dist/react-native/request/defaultAgent.js.map +1 -1
  402. package/dist/react-native/retry/RetryPolicy.d.ts +2 -2
  403. package/dist/react-native/retry/RetryPolicy.d.ts.map +1 -1
  404. package/dist/react-native/retry/RetryPolicy.js.map +1 -1
  405. package/dist/react-native/retry/defaultRetryPolicy.d.ts.map +1 -1
  406. package/dist/react-native/retry/defaultRetryPolicy.js +4 -8
  407. package/dist/react-native/retry/defaultRetryPolicy.js.map +1 -1
  408. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts +5 -3
  409. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  410. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js +9 -2
  411. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  412. package/dist/react-native/retry/retryUtility.d.ts.map +1 -1
  413. package/dist/react-native/retry/retryUtility.js +11 -5
  414. package/dist/react-native/retry/retryUtility.js.map +1 -1
  415. package/dist/react-native/retry/timeoutFailoverRetryPolicy.d.ts +6 -3
  416. package/dist/react-native/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  417. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +12 -4
  418. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  419. package/dist/react-native/routing/partitionKeyRangeCache.d.ts.map +1 -1
  420. package/dist/react-native/routing/partitionKeyRangeCache.js +11 -0
  421. package/dist/react-native/routing/partitionKeyRangeCache.js.map +1 -1
  422. package/dist/react-native/utils/checkURL.js +6 -0
  423. package/dist/react-native/utils/checkURL.js.map +1 -1
  424. package/dist/react-native/utils/hashing/hash.d.ts +2 -0
  425. package/dist/react-native/utils/hashing/hash.d.ts.map +1 -1
  426. package/dist/react-native/utils/hashing/hash.js +19 -0
  427. package/dist/react-native/utils/hashing/hash.js.map +1 -1
  428. package/package.json +11 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalPartitionEndpointManager.js","sourceRoot":"","sources":["../../src/globalPartitionEndpointManager.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { OperationType, ResourceType, isReadRequest } from \"./common/index.js\";\nimport {\n Constants,\n DiagnosticNodeInternal,\n type CosmosClientOptions,\n type GlobalEndpointManager,\n type RequestContext,\n} from \"./index.js\";\nimport { PartitionKeyRangeFailoverInfo } from \"./PartitionKeyRangeFailoverInfo.js\";\nimport { normalizeEndpoint } from \"./utils/checkURL.js\";\nimport { assertNotUndefined } from \"./utils/typeChecks.js\";\n\n/**\n * @hidden\n * This class is used to failover single partitions to different regions.\n */\nexport class GlobalPartitionEndpointManager {\n private readonly partitionKeyRangeToLocationForWrite: Map<string, PartitionKeyRangeFailoverInfo>;\n private readonly partitionKeyRangeToLocationForReadAndWrite: Map<\n string,\n PartitionKeyRangeFailoverInfo\n >;\n private enablePartitionLevelFailover: boolean;\n private enablePartitionLevelCircuitBreaker: boolean;\n private preferredLocations: string[];\n public preferredLocationsCount: number;\n private circuitBreakerFailbackBackgroundRefresher: NodeJS.Timeout;\n\n /**\n * @internal\n */\n constructor(\n options: CosmosClientOptions,\n private globalEndpointManager: GlobalEndpointManager,\n ) {\n this.partitionKeyRangeToLocationForWrite = new Map<string, PartitionKeyRangeFailoverInfo>();\n this.partitionKeyRangeToLocationForReadAndWrite = new Map<\n string,\n PartitionKeyRangeFailoverInfo\n >();\n\n this.enablePartitionLevelFailover = options.connectionPolicy.enablePartitionLevelFailover;\n this.enablePartitionLevelCircuitBreaker =\n options.connectionPolicy.enablePartitionLevelCircuitBreaker ||\n options.connectionPolicy.enablePartitionLevelFailover;\n\n this.preferredLocations = options.connectionPolicy.preferredLocations;\n this.preferredLocationsCount = this.preferredLocations ? this.preferredLocations.length : 0;\n if (this.enablePartitionLevelCircuitBreaker) {\n this.initiateCircuitBreakerFailbackLoop();\n }\n }\n\n /**\n * Checks eligibility of the request for partition failover and\n * tries to mark the endpoint unavailable for the partition key range. Future\n * requests will be routed to the next location if available.\n */\n public async tryPartitionLevelFailover(\n requestContext: RequestContext,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<boolean> {\n if (!(await this.isRequestEligibleForPartitionFailover(requestContext, true))) {\n return false;\n }\n\n const isRequestEligibleForPerPartitionAutomaticFailover =\n this.isRequestEligibleForPerPartitionAutomaticFailover(requestContext);\n const isRequestEligibleForPartitionLevelCircuitBreaker =\n this.isRequestEligibleForPartitionLevelCircuitBreaker(requestContext);\n\n if (\n isRequestEligibleForPerPartitionAutomaticFailover ||\n (isRequestEligibleForPartitionLevelCircuitBreaker &&\n (await this.incrementFailureCounterAndCheckFailover(\n requestContext,\n isRequestEligibleForPerPartitionAutomaticFailover,\n isRequestEligibleForPartitionLevelCircuitBreaker,\n )))\n ) {\n return this.tryMarkEndpointUnavailableForPartitionKeyRange(\n requestContext,\n diagnosticNode,\n isRequestEligibleForPerPartitionAutomaticFailover,\n isRequestEligibleForPartitionLevelCircuitBreaker,\n );\n }\n return false;\n }\n\n /**\n * Updates the DocumentServiceRequest routing location to point\n * new a location based if a partition level failover occurred.\n */\n public async tryAddPartitionLevelLocationOverride(\n requestContext: RequestContext,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<RequestContext> {\n if (!(await this.isRequestEligibleForPartitionFailover(requestContext, false))) {\n return requestContext;\n }\n\n const partitionKeyRangeId = requestContext.partitionKeyRangeId;\n\n if (this.isRequestEligibleForPerPartitionAutomaticFailover(requestContext)) {\n if (this.partitionKeyRangeToLocationForWrite.has(partitionKeyRangeId)) {\n const partitionFailOver = this.partitionKeyRangeToLocationForWrite.get(partitionKeyRangeId);\n requestContext.endpoint = partitionFailOver.getCurrentEndPoint();\n diagnosticNode.recordEndpointResolution(requestContext.endpoint);\n return requestContext;\n }\n } else if (this.isRequestEligibleForPartitionLevelCircuitBreaker(requestContext)) {\n if (this.partitionKeyRangeToLocationForReadAndWrite.has(partitionKeyRangeId)) {\n const partitionFailOver =\n this.partitionKeyRangeToLocationForReadAndWrite.get(partitionKeyRangeId);\n\n const canCircuitBreakerTriggerPartitionFailOver =\n await partitionFailOver.canCircuitBreakerTriggerPartitionFailOver(\n isReadRequest(requestContext.operationType),\n );\n if (canCircuitBreakerTriggerPartitionFailOver) {\n requestContext.endpoint = partitionFailOver.getCurrentEndPoint();\n diagnosticNode.recordEndpointResolution(requestContext.endpoint);\n return requestContext;\n }\n }\n }\n return requestContext;\n }\n\n /**\n * This method clears the background refresher for circuit breaker failback\n * and stops the periodic checks for unhealthy endpoints.\n */\n public dispose(): void {\n if (this.circuitBreakerFailbackBackgroundRefresher) {\n clearTimeout(this.circuitBreakerFailbackBackgroundRefresher);\n }\n }\n\n private async tryMarkEndpointUnavailableForPartitionKeyRange(\n requestContext: RequestContext,\n diagnosticNode: DiagnosticNodeInternal,\n isRequestEligibleForPerPartitionAutomaticFailover: boolean,\n isRequestEligibleForPartitionLevelCircuitBreaker: boolean,\n ): Promise<boolean> {\n const partitionKeyRangeId = requestContext.partitionKeyRangeId;\n const failedEndPoint = requestContext.endpoint;\n\n const readLocations = await this.globalEndpointManager.getReadLocations();\n const readEndPoints: string[] = [];\n\n if (isRequestEligibleForPerPartitionAutomaticFailover) {\n // For any single master write accounts, the next locations to fail over will be the read regions configured at the account level.\n for (const location of readLocations) {\n readEndPoints.push(location.databaseAccountEndpoint);\n }\n return this.tryAddOrUpdatePartitionFailoverInfoAndMoveToNextLocation(\n partitionKeyRangeId,\n failedEndPoint,\n readEndPoints,\n this.partitionKeyRangeToLocationForWrite,\n diagnosticNode,\n );\n } else if (isRequestEligibleForPartitionLevelCircuitBreaker) {\n // For the read requests or multi-master write requests, the next locations to fail over will be the preferred locations\n // configured at the account level plus any other read locations that are not already in the preferred locations.\n if (this.preferredLocations && this.preferredLocations.length > 0) {\n for (const preferredLocation of this.preferredLocations) {\n const location = readLocations.find(\n (loc) => normalizeEndpoint(loc.name) === normalizeEndpoint(preferredLocation),\n );\n if (location) {\n readEndPoints.push(location.databaseAccountEndpoint);\n }\n }\n\n // Add the rest of the locations not already added\n for (const location of readLocations) {\n if (!readEndPoints.includes(location.databaseAccountEndpoint)) {\n readEndPoints.push(location.databaseAccountEndpoint);\n }\n }\n } else {\n for (const location of readLocations) {\n readEndPoints.push(location.databaseAccountEndpoint);\n }\n }\n return this.tryAddOrUpdatePartitionFailoverInfoAndMoveToNextLocation(\n partitionKeyRangeId,\n failedEndPoint,\n readEndPoints,\n this.partitionKeyRangeToLocationForReadAndWrite,\n diagnosticNode,\n );\n }\n return false;\n }\n\n /**\n * Increments the failure counter for the specified partition and checks if the partition can fail over.\n * This method is used to determine if a partition should be failed over based on the number of request failures.\n */\n private async incrementFailureCounterAndCheckFailover(\n requestContext: RequestContext,\n isRequestEligibleForPerPartitionAutomaticFailover: boolean,\n isRequestEligibleForPartitionLevelCircuitBreaker: boolean,\n ): Promise<boolean> {\n const partitionKeyRangeId = requestContext.partitionKeyRangeId;\n const failedEndPoint = requestContext.endpoint;\n let partitionKeyRangeFailoverInfo: PartitionKeyRangeFailoverInfo;\n\n if (isRequestEligibleForPerPartitionAutomaticFailover) {\n if (!this.partitionKeyRangeToLocationForWrite.has(partitionKeyRangeId)) {\n // If the partition key range is not already in the map, add it\n const failoverInfo = new PartitionKeyRangeFailoverInfo(failedEndPoint);\n this.partitionKeyRangeToLocationForWrite.set(partitionKeyRangeId, failoverInfo);\n }\n partitionKeyRangeFailoverInfo =\n this.partitionKeyRangeToLocationForWrite.get(partitionKeyRangeId);\n } else if (isRequestEligibleForPartitionLevelCircuitBreaker) {\n if (!this.partitionKeyRangeToLocationForReadAndWrite.has(partitionKeyRangeId)) {\n // If the partition key range is not already in the map, add it\n const failoverInfo = new PartitionKeyRangeFailoverInfo(failedEndPoint);\n this.partitionKeyRangeToLocationForReadAndWrite.set(partitionKeyRangeId, failoverInfo);\n }\n partitionKeyRangeFailoverInfo =\n this.partitionKeyRangeToLocationForReadAndWrite.get(partitionKeyRangeId);\n } else {\n return false;\n }\n\n assertNotUndefined(\n partitionKeyRangeFailoverInfo,\n \"partitionKeyRangeFailoverInfo should be set if failover flags are true.\",\n );\n\n const currentTimeInMilliseconds = Date.now();\n await partitionKeyRangeFailoverInfo.incrementRequestFailureCounts(\n isReadRequest(requestContext.operationType),\n currentTimeInMilliseconds,\n );\n\n return partitionKeyRangeFailoverInfo.canCircuitBreakerTriggerPartitionFailOver(\n isReadRequest(requestContext.operationType),\n );\n }\n\n /** Validates if the given request is eligible for partition failover. */\n private async isRequestEligibleForPartitionFailover(\n requestContext: RequestContext,\n shouldValidateFailedLocation: boolean,\n ): Promise<boolean> {\n if (\n !requestContext ||\n !requestContext.operationType ||\n !requestContext.resourceType ||\n !requestContext.partitionKeyRangeId\n ) {\n return false;\n }\n\n const canUsePartitionLevelFailoverLocations = await this.canUsePartitionLevelFailoverLocations(\n requestContext.operationType,\n requestContext.resourceType,\n );\n if (!canUsePartitionLevelFailoverLocations) {\n return false;\n }\n\n if (shouldValidateFailedLocation && !requestContext.endpoint) {\n return false;\n }\n return true;\n }\n\n /** Determines if partition level failover locations can be used for the given request. */\n private async canUsePartitionLevelFailoverLocations(\n operationType?: OperationType,\n resourceType?: ResourceType,\n ): Promise<boolean> {\n const readEndPoints = await this.globalEndpointManager.getReadEndpoints();\n if (readEndPoints.length <= 1) {\n return false;\n }\n if (\n resourceType === ResourceType.item ||\n (resourceType === ResourceType.sproc && operationType === OperationType.Execute)\n ) {\n // Right now, for single-master only reads are supported for circuit breaker, and writes are supported for automatic.\n // failover. For multi master, both reads and writes are supported. Hence return true for both the cases.\n return true;\n }\n return false;\n }\n\n /**\n * Determines if a request is eligible for per-partition automatic failover.\n * A request is eligible if it is a write request, partition level failover is enabled,\n * and the global endpoint manager cannot use multiple write locations for the request.\n */\n private isRequestEligibleForPerPartitionAutomaticFailover(\n requestContext: RequestContext,\n ): boolean {\n return (\n this.enablePartitionLevelFailover &&\n !isReadRequest(requestContext.operationType) &&\n !this.globalEndpointManager.canUseMultipleWriteLocations(\n requestContext.resourceType,\n requestContext.operationType,\n )\n );\n }\n\n /**\n * Determines if a request is eligible for partition-level circuit breaker.\n * This method checks if partition-level circuit breaker is enabled, and if the request is a read-only request or\n * the global endpoint manager can use multiple write locations for the request.\n */\n private isRequestEligibleForPartitionLevelCircuitBreaker(\n requestContext: RequestContext,\n ): boolean {\n if (!this.enablePartitionLevelCircuitBreaker) {\n return false;\n }\n if (isReadRequest(requestContext.operationType)) {\n return true;\n }\n return this.globalEndpointManager.canUseMultipleWriteLocations(\n requestContext.resourceType,\n requestContext.operationType,\n );\n }\n\n /**\n * Attempts to add or update the partition failover information and move to the next available location.\n * This method checks if the current location for the partition key range has failed and updates the failover\n * information to route the request to the next available location. If all locations have been tried, it removes\n * the failover information for the partition key range. Return True if the failover information was successfully\n * updated and the request was routed to a new location, otherwise false.\n */\n private async tryAddOrUpdatePartitionFailoverInfoAndMoveToNextLocation(\n partitionKeyRangeId: string,\n failedEndPoint: string,\n nextEndPoints: readonly string[],\n partitionKeyRangeToLocation: Map<string, PartitionKeyRangeFailoverInfo>,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<boolean> {\n if (!partitionKeyRangeToLocation.has(partitionKeyRangeId)) {\n // If the partition key range is not already in the map, add it\n const failoverInfo = new PartitionKeyRangeFailoverInfo(failedEndPoint);\n partitionKeyRangeToLocation.set(partitionKeyRangeId, failoverInfo);\n }\n const partitionFailOver = partitionKeyRangeToLocation.get(partitionKeyRangeId);\n\n // Will return true if it was able to update to a new region\n if (\n await partitionFailOver.tryMoveNextLocation(\n nextEndPoints,\n failedEndPoint,\n diagnosticNode,\n partitionKeyRangeId,\n )\n ) {\n return true;\n }\n // All the locations have been tried. Remove the override information\n partitionKeyRangeToLocation.delete(partitionKeyRangeId);\n return false;\n }\n\n /**\n * Initiates a background loop that periodically checks for unhealthy endpoints\n * and attempts to open connections to them. If a connection is successfully\n * established, it initiates a failback to the original location for the partition key range.\n * This is useful for scenarios where a partition key range has been marked as unavailable\n * due to a circuit breaker, and we want to periodically check if the original location\n * has become healthy again.\n * The loop runs at a defined interval specified by Constants.StalePartitionUnavailabilityRefreshIntervalInMs.\n */\n private initiateCircuitBreakerFailbackLoop(): void {\n this.circuitBreakerFailbackBackgroundRefresher = setInterval(() => {\n (async () => {\n try {\n await this.openConnectionToUnhealthyEndpointsWithFailback();\n } catch (err) {\n console.error(\"Failed to open connection to unhealthy endpoints: \", err);\n }\n })();\n }, Constants.StalePartitionUnavailabilityRefreshIntervalInMs);\n }\n\n /**\n * Attempts to open connections to unhealthy endpoints and initiates failback if the connections are successful.\n * This method checks the partition key ranges that have failed locations and tries to re-establish connections\n * to those locations. If a connection is successfully re-established, it initiates a failback to the original\n * location for the partition key range.\n */\n private async openConnectionToUnhealthyEndpointsWithFailback(): Promise<void> {\n for (const pkRange of this.partitionKeyRangeToLocationForReadAndWrite.keys()) {\n const partitionFailover = this.partitionKeyRangeToLocationForReadAndWrite.get(pkRange);\n if (!partitionFailover) continue;\n\n const { firstRequestFailureTime } =\n await partitionFailover.snapshotPartitionFailoverTimestamps();\n const now = new Date();\n\n if (\n now.getTime() - firstRequestFailureTime >\n Constants.AllowedPartitionUnavailabilityDurationInMs\n ) {\n // Un-deterministically marking the original failed endpoint for the PkRange back to healthy.\n // Initiate Failback to the original failed location.\n this.partitionKeyRangeToLocationForReadAndWrite.delete(pkRange);\n }\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/queryExecutionContext/Aggregators/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,aAAa,GAE1B,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,aAAa,GACb,aAAa,GACb,qBAAqB,CAmBxB;AAED,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/queryExecutionContext/Aggregators/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,aAAa,GAE1B,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,aAAa,GACb,aAAa,GACb,qBAAqB,CAoBxB;AAED,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -22,6 +22,7 @@ function createAggregator(aggregateType) {
22
22
  case "Average":
23
23
  return new AverageAggregator_js_1.AverageAggregator();
24
24
  case "Count":
25
+ case "CountIf":
25
26
  return new CountAggregator_js_1.CountAggregator();
26
27
  case "Max":
27
28
  return new MaxAggregator_js_1.MaxAggregator();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/queryExecutionContext/Aggregators/index.ts"],"names":[],"mappings":";;;AAYA,4CA2BC;AAvCD,uCAAuC;AACvC,kCAAkC;AAClC,iEAA2D;AAuClD,kGAvCA,wCAAiB,OAuCA;AAtC1B,6DAAuD;AAsC3B,gGAtCnB,oCAAe,OAsCmB;AArC3C,yDAAmD;AAqCN,8FArCpC,gCAAa,OAqCoC;AApC1D,yDAAmD;AAoCS,8FApCnD,gCAAa,OAoCmD;AAnCzE,yDAAmD;AAmCwB,8FAnClE,gCAAa,OAmCkE;AAlCxF,yEAAmE;AAEnE,mEAA6D;AAC7D,iEAA2D;AAE3D,SAAgB,gBAAgB,CAC9B,aAA4B;IAQ5B,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO,IAAI,wCAAiB,EAAE,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,IAAI,oCAAe,EAAE,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,IAAI,gCAAa,EAAE,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,IAAI,gCAAa,EAAE,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,IAAI,gCAAa,EAAE,CAAC;QAC7B,KAAK,UAAU;YACb,OAAO,IAAI,0CAAkB,EAAE,CAAC;QAClC,KAAK,SAAS;YACZ,OAAO,IAAI,wCAAiB,EAAE,CAAC;QACjC;YACE,OAAO,IAAI,gDAAqB,EAAE,CAAC;IACvC,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AverageAggregator } from \"./AverageAggregator.js\";\nimport { CountAggregator } from \"./CountAggregator.js\";\nimport { MaxAggregator } from \"./MaxAggregator.js\";\nimport { MinAggregator } from \"./MinAggregator.js\";\nimport { SumAggregator } from \"./SumAggregator.js\";\nimport { StaticValueAggregator } from \"./StaticValueAggregator.js\";\nimport type { AggregateType } from \"../../request/ErrorResponse.js\";\nimport { MakeListAggregator } from \"./MakeListAggregator.js\";\nimport { MakeSetAggregator } from \"./MakeSetAggregator.js\";\n\nexport function createAggregator(\n aggregateType: AggregateType,\n):\n | AverageAggregator\n | CountAggregator\n | MaxAggregator\n | MinAggregator\n | SumAggregator\n | StaticValueAggregator {\n switch (aggregateType) {\n case \"Average\":\n return new AverageAggregator();\n case \"Count\":\n return new CountAggregator();\n case \"Max\":\n return new MaxAggregator();\n case \"Min\":\n return new MinAggregator();\n case \"Sum\":\n return new SumAggregator();\n case \"MakeList\":\n return new MakeListAggregator();\n case \"MakeSet\":\n return new MakeSetAggregator();\n default:\n return new StaticValueAggregator();\n }\n}\n\nexport { AverageAggregator, CountAggregator, MaxAggregator, MinAggregator, SumAggregator };\nexport { Aggregator } from \"./Aggregator.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/queryExecutionContext/Aggregators/index.ts"],"names":[],"mappings":";;;AAYA,4CA4BC;AAxCD,uCAAuC;AACvC,kCAAkC;AAClC,iEAA2D;AAwClD,kGAxCA,wCAAiB,OAwCA;AAvC1B,6DAAuD;AAuC3B,gGAvCnB,oCAAe,OAuCmB;AAtC3C,yDAAmD;AAsCN,8FAtCpC,gCAAa,OAsCoC;AArC1D,yDAAmD;AAqCS,8FArCnD,gCAAa,OAqCmD;AApCzE,yDAAmD;AAoCwB,8FApClE,gCAAa,OAoCkE;AAnCxF,yEAAmE;AAEnE,mEAA6D;AAC7D,iEAA2D;AAE3D,SAAgB,gBAAgB,CAC9B,aAA4B;IAQ5B,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO,IAAI,wCAAiB,EAAE,CAAC;QACjC,KAAK,OAAO,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,IAAI,oCAAe,EAAE,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,IAAI,gCAAa,EAAE,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,IAAI,gCAAa,EAAE,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,IAAI,gCAAa,EAAE,CAAC;QAC7B,KAAK,UAAU;YACb,OAAO,IAAI,0CAAkB,EAAE,CAAC;QAClC,KAAK,SAAS;YACZ,OAAO,IAAI,wCAAiB,EAAE,CAAC;QACjC;YACE,OAAO,IAAI,gDAAqB,EAAE,CAAC;IACvC,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AverageAggregator } from \"./AverageAggregator.js\";\nimport { CountAggregator } from \"./CountAggregator.js\";\nimport { MaxAggregator } from \"./MaxAggregator.js\";\nimport { MinAggregator } from \"./MinAggregator.js\";\nimport { SumAggregator } from \"./SumAggregator.js\";\nimport { StaticValueAggregator } from \"./StaticValueAggregator.js\";\nimport type { AggregateType } from \"../../request/ErrorResponse.js\";\nimport { MakeListAggregator } from \"./MakeListAggregator.js\";\nimport { MakeSetAggregator } from \"./MakeSetAggregator.js\";\n\nexport function createAggregator(\n aggregateType: AggregateType,\n):\n | AverageAggregator\n | CountAggregator\n | MaxAggregator\n | MinAggregator\n | SumAggregator\n | StaticValueAggregator {\n switch (aggregateType) {\n case \"Average\":\n return new AverageAggregator();\n case \"Count\":\n case \"CountIf\":\n return new CountAggregator();\n case \"Max\":\n return new MaxAggregator();\n case \"Min\":\n return new MinAggregator();\n case \"Sum\":\n return new SumAggregator();\n case \"MakeList\":\n return new MakeListAggregator();\n case \"MakeSet\":\n return new MakeSetAggregator();\n default:\n return new StaticValueAggregator();\n }\n}\n\nexport { AverageAggregator, CountAggregator, MaxAggregator, MinAggregator, SumAggregator };\nexport { Aggregator } from \"./Aggregator.js\";\n"]}
@@ -5,6 +5,7 @@ import type { FeedOptions } from "../request/index.js";
5
5
  import type { Response } from "../request/index.js";
6
6
  import type { FetchFunctionCallback } from "./defaultQueryExecutionContext.js";
7
7
  import { FetchResult } from "./FetchResult.js";
8
+ import type { CosmosHeaders } from "./headerUtils.js";
8
9
  import type { SqlQuerySpec } from "./index.js";
9
10
  /** @hidden */
10
11
  export declare class DocumentProducer {
@@ -18,7 +19,6 @@ export declare class DocumentProducer {
18
19
  previousContinuationToken: string;
19
20
  continuationToken: string;
20
21
  generation: number;
21
- private respHeaders;
22
22
  private internalExecutionContext;
23
23
  startEpk: string;
24
24
  endEpk: string;
@@ -36,13 +36,12 @@ export declare class DocumentProducer {
36
36
  fetchFunction: FetchFunctionCallback;
37
37
  hasMoreResults(): boolean;
38
38
  gotSplit(): boolean;
39
- private _getAndResetActiveResponseHeaders;
40
39
  private _updateStates;
41
40
  private static _needPartitionKeyRangeCacheRefresh;
42
41
  /**
43
42
  * Fetches and bufferes the next page of results in internal buffer
44
43
  */
45
- bufferMore(diagnosticNode: DiagnosticNodeInternal): Promise<void>;
44
+ bufferMore(diagnosticNode: DiagnosticNodeInternal): Promise<CosmosHeaders>;
46
45
  getTargetParitionKeyRange(): PartitionKeyRange;
47
46
  /**
48
47
  * Peak the next item in the buffer
@@ -1 +1 @@
1
- {"version":3,"file":"documentProducer.d.ts","sourceRoot":"","sources":["../../../src/queryExecutionContext/documentProducer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAY,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAmB,MAAM,kBAAkB,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,cAAc;AACd,qBAAa,gBAAgB;IAyBzB,OAAO,CAAC,aAAa;IAxBvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,KAAK,CAAwB;IAC9B,uBAAuB,EAAE,iBAAiB,CAAC;IAC3C,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAQ;IACZ,yBAAyB,EAAE,MAAM,CAAC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAK;IAC9B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,wBAAwB,CAA+B;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB,EAAE,OAAO,CAAC;IAExC;;;;;;;OAOG;gBAEO,aAAa,EAAE,aAAa,EACpC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,EACnB,uBAAuB,EAAE,iBAAiB,EAC1C,OAAO,EAAE,WAAW,EACpB,oBAAoB,EAAE,MAAM,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,uBAAuB,GAAE,OAAe;IAwBnC,iBAAiB,IAAI,GAAG,EAAE;IAmB1B,aAAa,EAAE,qBAAqB,CAwBzC;IAEK,cAAc,IAAI,OAAO;IAIzB,QAAQ,IAAI,OAAO;IAY1B,OAAO,CAAC,iCAAiC;IAMzC,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,MAAM,CAAC,kCAAkC;IASjD;;OAEG;IACU,UAAU,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDvE,yBAAyB,IAAI,iBAAiB;IAGrD;;OAEG;IACI,YAAY,IAAI,GAAG;IAqB1B;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAoBpD;;OAEG;IACU,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IA4B3D;;OAEG;IACH,OAAO,CAAC,OAAO;CAiChB"}
1
+ {"version":3,"file":"documentProducer.d.ts","sourceRoot":"","sources":["../../../src/queryExecutionContext/documentProducer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAY,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAmB,MAAM,kBAAkB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,cAAc;AACd,qBAAa,gBAAgB;IAwBzB,OAAO,CAAC,aAAa;IAvBvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,KAAK,CAAwB;IAC9B,uBAAuB,EAAE,iBAAiB,CAAC;IAC3C,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAQ;IACZ,yBAAyB,EAAE,MAAM,CAAC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAK;IAC9B,OAAO,CAAC,wBAAwB,CAA+B;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB,EAAE,OAAO,CAAC;IAExC;;;;;;;OAOG;gBAEO,aAAa,EAAE,aAAa,EACpC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,EACnB,uBAAuB,EAAE,iBAAiB,EAC1C,OAAO,EAAE,WAAW,EACpB,oBAAoB,EAAE,MAAM,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,uBAAuB,GAAE,OAAe;IAuBnC,iBAAiB,IAAI,GAAG,EAAE;IAmB1B,aAAa,EAAE,qBAAqB,CAwBzC;IAEK,cAAc,IAAI,OAAO;IAIzB,QAAQ,IAAI,OAAO;IAY1B,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,MAAM,CAAC,kCAAkC;IASjD;;OAEG;IACU,UAAU,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkDhF,yBAAyB,IAAI,iBAAiB;IAGrD;;OAEG;IACI,YAAY,IAAI,GAAG;IAqB1B;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAoBpD;;OAEG;IACU,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IA6B3D;;OAEG;IACH,OAAO,CAAC,OAAO;CAiChB"}
@@ -47,7 +47,6 @@ class DocumentProducer {
47
47
  this.err = undefined;
48
48
  this.previousContinuationToken = undefined;
49
49
  this.continuationToken = undefined;
50
- this.respHeaders = (0, headerUtils_js_1.getInitialHeader)();
51
50
  this.internalExecutionContext = new defaultQueryExecutionContext_js_1.DefaultQueryExecutionContext(options, this.fetchFunction, correlatedActivityId);
52
51
  this.startEpk = startEpk;
53
52
  this.endEpk = endEpk;
@@ -85,11 +84,6 @@ class DocumentProducer {
85
84
  }
86
85
  return false;
87
86
  }
88
- _getAndResetActiveResponseHeaders() {
89
- const ret = this.respHeaders;
90
- this.respHeaders = (0, headerUtils_js_1.getInitialHeader)();
91
- return ret;
92
- }
93
87
  _updateStates(err, allFetched) {
94
88
  if (err) {
95
89
  this.err = err;
@@ -139,7 +133,7 @@ class DocumentProducer {
139
133
  headerResponse[index_js_1.Constants.HttpHeaders.QueryMetrics][this.targetPartitionKeyRange.id] =
140
134
  queryMetrics;
141
135
  }
142
- (0, headerUtils_js_1.mergeHeaders)(this.respHeaders, headerResponse);
136
+ return headerResponse;
143
137
  }
144
138
  catch (err) {
145
139
  if (DocumentProducer._needPartitionKeyRangeCacheRefresh(err)) {
@@ -147,7 +141,7 @@ class DocumentProducer {
147
141
  // Buffer the error so the execution context can still get the feedResponses in the itemBuffer
148
142
  const bufferedError = new FetchResult_js_1.FetchResult(undefined, err);
149
143
  this.fetchResults.push(bufferedError);
150
- (0, headerUtils_js_1.mergeHeaders)(this.respHeaders, err.headers);
144
+ return err.headers;
151
145
  }
152
146
  else {
153
147
  this._updateStates(err, err.resources === undefined);
@@ -187,7 +181,7 @@ class DocumentProducer {
187
181
  throw this.err;
188
182
  }
189
183
  if (this.allFetched) {
190
- return { result: undefined, headers: this._getAndResetActiveResponseHeaders() };
184
+ return { result: undefined, headers: (0, headerUtils_js_1.getInitialHeader)() };
191
185
  }
192
186
  try {
193
187
  const { result, headers } = this.current();
@@ -211,23 +205,24 @@ class DocumentProducer {
211
205
  throw this.err;
212
206
  }
213
207
  if (this.allFetched) {
214
- return { result: undefined, headers: this._getAndResetActiveResponseHeaders() };
208
+ return { result: undefined, headers: (0, headerUtils_js_1.getInitialHeader)() };
215
209
  }
216
210
  const resources = [];
217
- const resHeaders = (0, headerUtils_js_1.getInitialHeader)();
218
211
  try {
219
212
  while (this.fetchResults.length > 0) {
220
- const { result, headers } = this.current();
213
+ const { result } = this.current();
221
214
  this._updateStates(undefined, result === undefined);
222
- (0, headerUtils_js_1.mergeHeaders)(resHeaders, headers);
223
215
  if (result === undefined) {
224
- return { result: resources.length > 0 ? resources : undefined, headers: resHeaders };
216
+ return {
217
+ result: resources.length > 0 ? resources : undefined,
218
+ headers: (0, headerUtils_js_1.getInitialHeader)(),
219
+ };
225
220
  }
226
221
  else {
227
222
  resources.push(result);
228
223
  }
229
224
  }
230
- return { result: resources, headers: resHeaders };
225
+ return { result: resources, headers: (0, headerUtils_js_1.getInitialHeader)() };
231
226
  }
232
227
  catch (err) {
233
228
  this._updateStates(err, err.item === undefined);
@@ -246,15 +241,15 @@ class DocumentProducer {
246
241
  case FetchResult_js_1.FetchResultType.Done:
247
242
  return {
248
243
  result: undefined,
249
- headers: this._getAndResetActiveResponseHeaders(),
244
+ headers: (0, headerUtils_js_1.getInitialHeader)(),
250
245
  };
251
246
  case FetchResult_js_1.FetchResultType.Exception:
252
- fetchResult.error.headers = this._getAndResetActiveResponseHeaders();
247
+ fetchResult.error.headers = (0, headerUtils_js_1.getInitialHeader)();
253
248
  throw fetchResult.error;
254
249
  case FetchResult_js_1.FetchResultType.Result:
255
250
  return {
256
251
  result: fetchResult.feedResponse,
257
- headers: this._getAndResetActiveResponseHeaders(),
252
+ headers: (0, headerUtils_js_1.getInitialHeader)(),
258
253
  };
259
254
  }
260
255
  }
@@ -262,11 +257,11 @@ class DocumentProducer {
262
257
  if (this.allFetched) {
263
258
  return {
264
259
  result: undefined,
265
- headers: this._getAndResetActiveResponseHeaders(),
260
+ headers: (0, headerUtils_js_1.getInitialHeader)(),
266
261
  };
267
262
  }
268
263
  // If the internal buffer is empty, return empty result
269
- return { result: [], headers: this._getAndResetActiveResponseHeaders() };
264
+ return { result: [], headers: (0, headerUtils_js_1.getInitialHeader)() };
270
265
  }
271
266
  }
272
267
  exports.DocumentProducer = DocumentProducer;
@@ -1 +1 @@
1
- {"version":3,"file":"documentProducer.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/documentProducer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKeyRange, Resource } from \"../client/index.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport {\n Constants,\n getIdFromLink,\n getPathFromLink,\n ResourceType,\n StatusCodes,\n SubStatusCodes,\n} from \"../common/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { FeedOptions } from \"../request/index.js\";\nimport type { Response } from \"../request/index.js\";\nimport { DefaultQueryExecutionContext } from \"./defaultQueryExecutionContext.js\";\nimport type { FetchFunctionCallback } from \"./defaultQueryExecutionContext.js\";\nimport { FetchResult, FetchResultType } from \"./FetchResult.js\";\nimport { getInitialHeader, mergeHeaders } from \"./headerUtils.js\";\nimport type { CosmosHeaders } from \"./headerUtils.js\";\nimport type { SqlQuerySpec } from \"./index.js\";\n\n/** @hidden */\nexport class DocumentProducer {\n private collectionLink: string;\n private query: string | SqlQuerySpec;\n public targetPartitionKeyRange: PartitionKeyRange;\n public fetchResults: FetchResult[];\n public allFetched: boolean;\n private err: Error;\n public previousContinuationToken: string;\n public continuationToken: string;\n public generation: number = 0;\n private respHeaders: CosmosHeaders;\n private internalExecutionContext: DefaultQueryExecutionContext;\n public startEpk: string;\n public endEpk: string;\n public populateEpkRangeHeaders: boolean;\n\n /**\n * Provides the Target Partition Range Query Execution Context.\n * @param clientContext - The service endpoint to use to create the client.\n * @param collectionLink - Represents collection link\n * @param query - A SQL query.\n * @param targetPartitionKeyRange - Query Target Partition key Range\n * @hidden\n */\n constructor(\n private clientContext: ClientContext,\n collectionLink: string,\n query: SqlQuerySpec,\n targetPartitionKeyRange: PartitionKeyRange,\n options: FeedOptions,\n correlatedActivityId: string,\n startEpk?: string,\n endEpk?: string,\n populateEpkRangeHeaders: boolean = false,\n ) {\n // TODO: any options\n this.collectionLink = collectionLink;\n this.query = query;\n this.targetPartitionKeyRange = targetPartitionKeyRange;\n this.fetchResults = [];\n\n this.allFetched = false;\n this.err = undefined;\n\n this.previousContinuationToken = undefined;\n this.continuationToken = undefined;\n this.respHeaders = getInitialHeader();\n\n this.internalExecutionContext = new DefaultQueryExecutionContext(\n options,\n this.fetchFunction,\n correlatedActivityId,\n );\n this.startEpk = startEpk;\n this.endEpk = endEpk;\n this.populateEpkRangeHeaders = populateEpkRangeHeaders;\n }\n public peekBufferedItems(): any[] {\n const bufferedResults = [];\n for (let i = 0, done = false; i < this.fetchResults.length && !done; i++) {\n const fetchResult = this.fetchResults[i];\n switch (fetchResult.fetchResultType) {\n case FetchResultType.Done:\n done = true;\n break;\n case FetchResultType.Exception:\n done = true;\n break;\n case FetchResultType.Result:\n bufferedResults.push(fetchResult.feedResponse);\n break;\n }\n }\n return bufferedResults;\n }\n\n public fetchFunction: FetchFunctionCallback = async (\n diagnosticNode: DiagnosticNodeInternal,\n options: FeedOptions,\n correlatedActivityId: string,\n ): Promise<Response<Resource>> => {\n const path = getPathFromLink(this.collectionLink, ResourceType.item);\n diagnosticNode.addData({ partitionKeyRangeId: this.targetPartitionKeyRange.id });\n const id = getIdFromLink(this.collectionLink);\n const startEpk = this.populateEpkRangeHeaders ? this.startEpk : undefined;\n const endEpk = this.populateEpkRangeHeaders ? this.endEpk : undefined;\n\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n resultFn: (result: any) => result.Documents,\n query: this.query,\n options,\n diagnosticNode,\n partitionKeyRangeId: this.targetPartitionKeyRange[\"id\"],\n correlatedActivityId: correlatedActivityId,\n startEpk: startEpk,\n endEpk: endEpk,\n });\n };\n\n public hasMoreResults(): boolean {\n return this.internalExecutionContext.hasMoreResults() || this.fetchResults.length !== 0;\n }\n\n public gotSplit(): boolean {\n if (this.fetchResults.length !== 0) {\n const fetchResult = this.fetchResults[0];\n if (fetchResult.fetchResultType === FetchResultType.Exception) {\n if (DocumentProducer._needPartitionKeyRangeCacheRefresh(fetchResult.error)) {\n return true;\n }\n }\n }\n return false;\n }\n\n private _getAndResetActiveResponseHeaders(): CosmosHeaders {\n const ret = this.respHeaders;\n this.respHeaders = getInitialHeader();\n return ret;\n }\n\n private _updateStates(err: any, allFetched: boolean): void {\n if (err) {\n this.err = err;\n return;\n }\n if (allFetched) {\n this.allFetched = true;\n }\n if (this.internalExecutionContext.continuationToken === this.continuationToken) {\n // nothing changed\n return;\n }\n this.previousContinuationToken = this.continuationToken;\n this.continuationToken = this.internalExecutionContext.continuationToken;\n }\n\n private static _needPartitionKeyRangeCacheRefresh(error: any): boolean {\n // TODO: error\n return (\n error.code === StatusCodes.Gone &&\n \"substatus\" in error &&\n error[\"substatus\"] === SubStatusCodes.PartitionKeyRangeGone\n );\n }\n\n /**\n * Fetches and bufferes the next page of results in internal buffer\n */\n public async bufferMore(diagnosticNode: DiagnosticNodeInternal): Promise<void> {\n if (this.err) {\n throw this.err;\n }\n\n try {\n const { result: resources, headers: headerResponse } =\n await this.internalExecutionContext.fetchMore(diagnosticNode);\n ++this.generation;\n this._updateStates(undefined, resources === undefined);\n if (resources !== undefined) {\n // add fetched header to the 1st element in the buffer\n let addHeaderToFetchResult = true;\n resources.forEach((element: any) => {\n this.fetchResults.push(\n new FetchResult(\n element,\n undefined,\n addHeaderToFetchResult ? headerResponse : getInitialHeader(),\n ),\n );\n addHeaderToFetchResult = false;\n });\n }\n\n // need to modify the header response so that the query metrics are per partition\n if (headerResponse != null && Constants.HttpHeaders.QueryMetrics in headerResponse) {\n // \"0\" is the default partition before one is actually assigned.\n const queryMetrics = headerResponse[Constants.HttpHeaders.QueryMetrics][\"0\"];\n\n // Wraping query metrics in a object where the keys are the partition key range.\n headerResponse[Constants.HttpHeaders.QueryMetrics] = {};\n headerResponse[Constants.HttpHeaders.QueryMetrics][this.targetPartitionKeyRange.id] =\n queryMetrics;\n }\n mergeHeaders(this.respHeaders, headerResponse);\n } catch (err: any) {\n if (DocumentProducer._needPartitionKeyRangeCacheRefresh(err)) {\n // Split just happend\n // Buffer the error so the execution context can still get the feedResponses in the itemBuffer\n const bufferedError = new FetchResult(undefined, err);\n this.fetchResults.push(bufferedError);\n mergeHeaders(this.respHeaders, err.headers);\n } else {\n this._updateStates(err, err.resources === undefined);\n throw err;\n }\n }\n }\n\n public getTargetParitionKeyRange(): PartitionKeyRange {\n return this.targetPartitionKeyRange;\n }\n /**\n * Peak the next item in the buffer\n */\n public peakNextItem(): any {\n if (this.err) {\n throw this.err;\n }\n if (this.allFetched || this.fetchResults.length === 0) {\n return undefined;\n }\n const fetchResult = this.fetchResults[0];\n\n switch (fetchResult.fetchResultType) {\n case FetchResultType.Done:\n return undefined;\n\n case FetchResultType.Exception: // do not throw this error\n return undefined;\n\n case FetchResultType.Result:\n return fetchResult.feedResponse;\n }\n }\n\n /**\n * Returns the first item in the buffered results if any, or [] otherwise.\n */\n public async fetchNextItem(): Promise<Response<any>> {\n if (this.err) {\n this._updateStates(this.err, undefined);\n throw this.err;\n }\n if (this.allFetched) {\n return { result: undefined, headers: this._getAndResetActiveResponseHeaders() };\n }\n try {\n const { result, headers } = this.current();\n this._updateStates(undefined, result === undefined);\n if (result === undefined || result.length === 0) {\n return { result: undefined, headers };\n }\n return { result, headers }; //\n } catch (err: any) {\n this._updateStates(err, err.item === undefined);\n throw err;\n }\n }\n /**\n * Fetches all the buffered results\n */\n public async fetchBufferedItems(): Promise<Response<any[]>> {\n if (this.err) {\n this._updateStates(this.err, undefined);\n throw this.err;\n }\n if (this.allFetched) {\n return { result: undefined, headers: this._getAndResetActiveResponseHeaders() };\n }\n const resources: any[] = [];\n const resHeaders: CosmosHeaders = getInitialHeader();\n try {\n while (this.fetchResults.length > 0) {\n const { result, headers } = this.current();\n this._updateStates(undefined, result === undefined);\n mergeHeaders(resHeaders, headers);\n if (result === undefined) {\n return { result: resources.length > 0 ? resources : undefined, headers: resHeaders };\n } else {\n resources.push(result);\n }\n }\n return { result: resources, headers: resHeaders };\n } catch (err: any) {\n this._updateStates(err, err.item === undefined);\n throw err;\n }\n }\n\n /**\n * Retrieve the current element on the DocumentProducer.\n */\n private current(): Response<any> {\n // If something is buffered just give that\n if (this.fetchResults.length > 0) {\n const fetchResult = this.fetchResults.shift();\n // Need to unwrap fetch results\n switch (fetchResult.fetchResultType) {\n case FetchResultType.Done:\n return {\n result: undefined,\n headers: this._getAndResetActiveResponseHeaders(),\n };\n case FetchResultType.Exception:\n fetchResult.error.headers = this._getAndResetActiveResponseHeaders();\n throw fetchResult.error;\n case FetchResultType.Result:\n return {\n result: fetchResult.feedResponse,\n headers: this._getAndResetActiveResponseHeaders(),\n };\n }\n }\n\n // If there isn't anymore items left to fetch then let the user know.\n if (this.allFetched) {\n return {\n result: undefined,\n headers: this._getAndResetActiveResponseHeaders(),\n };\n }\n\n // If the internal buffer is empty, return empty result\n return { result: [], headers: this._getAndResetActiveResponseHeaders() };\n }\n}\n"]}
1
+ {"version":3,"file":"documentProducer.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/documentProducer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKeyRange, Resource } from \"../client/index.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport {\n Constants,\n getIdFromLink,\n getPathFromLink,\n ResourceType,\n StatusCodes,\n SubStatusCodes,\n} from \"../common/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { FeedOptions } from \"../request/index.js\";\nimport type { Response } from \"../request/index.js\";\nimport { DefaultQueryExecutionContext } from \"./defaultQueryExecutionContext.js\";\nimport type { FetchFunctionCallback } from \"./defaultQueryExecutionContext.js\";\nimport { FetchResult, FetchResultType } from \"./FetchResult.js\";\nimport { getInitialHeader } from \"./headerUtils.js\";\nimport type { CosmosHeaders } from \"./headerUtils.js\";\nimport type { SqlQuerySpec } from \"./index.js\";\n\n/** @hidden */\nexport class DocumentProducer {\n private collectionLink: string;\n private query: string | SqlQuerySpec;\n public targetPartitionKeyRange: PartitionKeyRange;\n public fetchResults: FetchResult[];\n public allFetched: boolean;\n private err: Error;\n public previousContinuationToken: string;\n public continuationToken: string;\n public generation: number = 0;\n private internalExecutionContext: DefaultQueryExecutionContext;\n public startEpk: string;\n public endEpk: string;\n public populateEpkRangeHeaders: boolean;\n\n /**\n * Provides the Target Partition Range Query Execution Context.\n * @param clientContext - The service endpoint to use to create the client.\n * @param collectionLink - Represents collection link\n * @param query - A SQL query.\n * @param targetPartitionKeyRange - Query Target Partition key Range\n * @hidden\n */\n constructor(\n private clientContext: ClientContext,\n collectionLink: string,\n query: SqlQuerySpec,\n targetPartitionKeyRange: PartitionKeyRange,\n options: FeedOptions,\n correlatedActivityId: string,\n startEpk?: string,\n endEpk?: string,\n populateEpkRangeHeaders: boolean = false,\n ) {\n // TODO: any options\n this.collectionLink = collectionLink;\n this.query = query;\n this.targetPartitionKeyRange = targetPartitionKeyRange;\n this.fetchResults = [];\n\n this.allFetched = false;\n this.err = undefined;\n\n this.previousContinuationToken = undefined;\n this.continuationToken = undefined;\n\n this.internalExecutionContext = new DefaultQueryExecutionContext(\n options,\n this.fetchFunction,\n correlatedActivityId,\n );\n this.startEpk = startEpk;\n this.endEpk = endEpk;\n this.populateEpkRangeHeaders = populateEpkRangeHeaders;\n }\n public peekBufferedItems(): any[] {\n const bufferedResults = [];\n for (let i = 0, done = false; i < this.fetchResults.length && !done; i++) {\n const fetchResult = this.fetchResults[i];\n switch (fetchResult.fetchResultType) {\n case FetchResultType.Done:\n done = true;\n break;\n case FetchResultType.Exception:\n done = true;\n break;\n case FetchResultType.Result:\n bufferedResults.push(fetchResult.feedResponse);\n break;\n }\n }\n return bufferedResults;\n }\n\n public fetchFunction: FetchFunctionCallback = async (\n diagnosticNode: DiagnosticNodeInternal,\n options: FeedOptions,\n correlatedActivityId: string,\n ): Promise<Response<Resource>> => {\n const path = getPathFromLink(this.collectionLink, ResourceType.item);\n diagnosticNode.addData({ partitionKeyRangeId: this.targetPartitionKeyRange.id });\n const id = getIdFromLink(this.collectionLink);\n const startEpk = this.populateEpkRangeHeaders ? this.startEpk : undefined;\n const endEpk = this.populateEpkRangeHeaders ? this.endEpk : undefined;\n\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n resultFn: (result: any) => result.Documents,\n query: this.query,\n options,\n diagnosticNode,\n partitionKeyRangeId: this.targetPartitionKeyRange[\"id\"],\n correlatedActivityId: correlatedActivityId,\n startEpk: startEpk,\n endEpk: endEpk,\n });\n };\n\n public hasMoreResults(): boolean {\n return this.internalExecutionContext.hasMoreResults() || this.fetchResults.length !== 0;\n }\n\n public gotSplit(): boolean {\n if (this.fetchResults.length !== 0) {\n const fetchResult = this.fetchResults[0];\n if (fetchResult.fetchResultType === FetchResultType.Exception) {\n if (DocumentProducer._needPartitionKeyRangeCacheRefresh(fetchResult.error)) {\n return true;\n }\n }\n }\n return false;\n }\n\n private _updateStates(err: any, allFetched: boolean): void {\n if (err) {\n this.err = err;\n return;\n }\n if (allFetched) {\n this.allFetched = true;\n }\n if (this.internalExecutionContext.continuationToken === this.continuationToken) {\n // nothing changed\n return;\n }\n this.previousContinuationToken = this.continuationToken;\n this.continuationToken = this.internalExecutionContext.continuationToken;\n }\n\n private static _needPartitionKeyRangeCacheRefresh(error: any): boolean {\n // TODO: error\n return (\n error.code === StatusCodes.Gone &&\n \"substatus\" in error &&\n error[\"substatus\"] === SubStatusCodes.PartitionKeyRangeGone\n );\n }\n\n /**\n * Fetches and bufferes the next page of results in internal buffer\n */\n public async bufferMore(diagnosticNode: DiagnosticNodeInternal): Promise<CosmosHeaders> {\n if (this.err) {\n throw this.err;\n }\n\n try {\n const { result: resources, headers: headerResponse } =\n await this.internalExecutionContext.fetchMore(diagnosticNode);\n ++this.generation;\n this._updateStates(undefined, resources === undefined);\n if (resources !== undefined) {\n // add fetched header to the 1st element in the buffer\n let addHeaderToFetchResult = true;\n resources.forEach((element: any) => {\n this.fetchResults.push(\n new FetchResult(\n element,\n undefined,\n addHeaderToFetchResult ? headerResponse : getInitialHeader(),\n ),\n );\n addHeaderToFetchResult = false;\n });\n }\n\n // need to modify the header response so that the query metrics are per partition\n if (headerResponse != null && Constants.HttpHeaders.QueryMetrics in headerResponse) {\n // \"0\" is the default partition before one is actually assigned.\n const queryMetrics = headerResponse[Constants.HttpHeaders.QueryMetrics][\"0\"];\n\n // Wraping query metrics in a object where the keys are the partition key range.\n headerResponse[Constants.HttpHeaders.QueryMetrics] = {};\n headerResponse[Constants.HttpHeaders.QueryMetrics][this.targetPartitionKeyRange.id] =\n queryMetrics;\n }\n return headerResponse;\n } catch (err: any) {\n if (DocumentProducer._needPartitionKeyRangeCacheRefresh(err)) {\n // Split just happend\n // Buffer the error so the execution context can still get the feedResponses in the itemBuffer\n const bufferedError = new FetchResult(undefined, err);\n this.fetchResults.push(bufferedError);\n return err.headers;\n } else {\n this._updateStates(err, err.resources === undefined);\n throw err;\n }\n }\n }\n\n public getTargetParitionKeyRange(): PartitionKeyRange {\n return this.targetPartitionKeyRange;\n }\n /**\n * Peak the next item in the buffer\n */\n public peakNextItem(): any {\n if (this.err) {\n throw this.err;\n }\n if (this.allFetched || this.fetchResults.length === 0) {\n return undefined;\n }\n const fetchResult = this.fetchResults[0];\n\n switch (fetchResult.fetchResultType) {\n case FetchResultType.Done:\n return undefined;\n\n case FetchResultType.Exception: // do not throw this error\n return undefined;\n\n case FetchResultType.Result:\n return fetchResult.feedResponse;\n }\n }\n\n /**\n * Returns the first item in the buffered results if any, or [] otherwise.\n */\n public async fetchNextItem(): Promise<Response<any>> {\n if (this.err) {\n this._updateStates(this.err, undefined);\n throw this.err;\n }\n if (this.allFetched) {\n return { result: undefined, headers: getInitialHeader() };\n }\n try {\n const { result, headers } = this.current();\n this._updateStates(undefined, result === undefined);\n if (result === undefined || result.length === 0) {\n return { result: undefined, headers };\n }\n return { result, headers }; //\n } catch (err: any) {\n this._updateStates(err, err.item === undefined);\n throw err;\n }\n }\n /**\n * Fetches all the buffered results\n */\n public async fetchBufferedItems(): Promise<Response<any[]>> {\n if (this.err) {\n this._updateStates(this.err, undefined);\n throw this.err;\n }\n if (this.allFetched) {\n return { result: undefined, headers: getInitialHeader() };\n }\n const resources: any[] = [];\n try {\n while (this.fetchResults.length > 0) {\n const { result } = this.current();\n this._updateStates(undefined, result === undefined);\n if (result === undefined) {\n return {\n result: resources.length > 0 ? resources : undefined,\n headers: getInitialHeader(),\n };\n } else {\n resources.push(result);\n }\n }\n return { result: resources, headers: getInitialHeader() };\n } catch (err: any) {\n this._updateStates(err, err.item === undefined);\n throw err;\n }\n }\n\n /**\n * Retrieve the current element on the DocumentProducer.\n */\n private current(): Response<any> {\n // If something is buffered just give that\n if (this.fetchResults.length > 0) {\n const fetchResult = this.fetchResults.shift();\n // Need to unwrap fetch results\n switch (fetchResult.fetchResultType) {\n case FetchResultType.Done:\n return {\n result: undefined,\n headers: getInitialHeader(),\n };\n case FetchResultType.Exception:\n fetchResult.error.headers = getInitialHeader();\n throw fetchResult.error;\n case FetchResultType.Result:\n return {\n result: fetchResult.feedResponse,\n headers: getInitialHeader(),\n };\n }\n }\n\n // If there isn't anymore items left to fetch then let the user know.\n if (this.allFetched) {\n return {\n result: undefined,\n headers: getInitialHeader(),\n };\n }\n\n // If the internal buffer is empty, return empty result\n return { result: [], headers: getInitialHeader() };\n }\n}\n"]}
@@ -2,6 +2,7 @@ import type { ClientContext } from "../ClientContext.js";
2
2
  import type { DiagnosticNodeInternal } from "../diagnostics/DiagnosticNodeInternal.js";
3
3
  import type { FeedOptions, PartitionedQueryExecutionInfo, QueryRange, Response } from "../request/index.js";
4
4
  import type { ExecutionContext } from "./ExecutionContext.js";
5
+ import { SqlQuerySpec } from "./SqlQuerySpec.js";
5
6
  /** @hidden */
6
7
  export declare enum HybridQueryExecutionContextBaseStates {
7
8
  uninitialized = "uninitialized",
@@ -12,6 +13,7 @@ export declare enum HybridQueryExecutionContextBaseStates {
12
13
  export declare class HybridQueryExecutionContext implements ExecutionContext {
13
14
  private clientContext;
14
15
  private collectionLink;
16
+ private query;
15
17
  private options;
16
18
  private partitionedQueryExecutionInfo;
17
19
  private correlatedActivityId;
@@ -32,7 +34,7 @@ export declare class HybridQueryExecutionContext implements ExecutionContext {
32
34
  private hybridSearchResult;
33
35
  private uniqueItems;
34
36
  private isSingleComponent;
35
- constructor(clientContext: ClientContext, collectionLink: string, options: FeedOptions, partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo, correlatedActivityId: string, allPartitionsRanges: QueryRange[]);
37
+ constructor(clientContext: ClientContext, collectionLink: string, query: string | SqlQuerySpec, options: FeedOptions, partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo, correlatedActivityId: string, allPartitionsRanges: QueryRange[]);
36
38
  nextItem(diagnosticNode: DiagnosticNodeInternal): Promise<Response<any>>;
37
39
  hasMoreResults(): boolean;
38
40
  fetchMore(diagnosticNode?: DiagnosticNodeInternal): Promise<Response<any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"hybridQueryExecutionContext.d.ts","sourceRoot":"","sources":["../../../src/queryExecutionContext/hybridQueryExecutionContext.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,KAAK,EACV,WAAW,EAEX,6BAA6B,EAE7B,UAAU,EACV,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,cAAc;AACd,oBAAY,qCAAqC;IAC/C,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AACD,qBAAa,2BAA4B,YAAW,gBAAgB;IAoBhE,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,6BAA6B;IACrC,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,mBAAmB;IAxB7B,OAAO,CAAC,gCAAgC,CAAmB;IAC3D,OAAO,CAAC,0BAA0B,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,0BAA0B,CAA6B;IAC/D,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,4BAA4B,CAA4D;IAChG,OAAO,CAAC,4BAA4B,CAA4D;IAChG,OAAO,CAAC,gCAAgC,CACuB;IAC/D,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,MAAM,CAAkE;IAChF,OAAO,CAAC,kBAAkB,CAAiC;IAC3D,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,iBAAiB,CAAkB;gBAGjC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,WAAW,EACpB,6BAA6B,EAAE,6BAA6B,EAC5D,oBAAoB,EAAE,MAAM,EAC5B,mBAAmB,EAAE,UAAU,EAAE;IAsC9B,QAAQ,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAiB9E,cAAc,IAAI,OAAO;IAenB,SAAS,CAAC,cAAc,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAKzE,iBAAiB;YA2BjB,UAAU;YA4BV,uBAAuB;IAyDrC,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,wBAAwB;YAUlB,KAAK;YAqBL,QAAQ;IAoBtB,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,gCAAgC;YAiD1B,oBAAoB;IAoDlC,OAAO,CAAC,gCAAgC;IA8BxC,OAAO,CAAC,uBAAuB;IAmD/B,OAAO,CAAC,4BAA4B;IAmCpC,OAAO,CAAC,eAAe,CAerB;IAEF,OAAO,CAAC,uBAAuB;CAmChC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C"}
1
+ {"version":3,"file":"hybridQueryExecutionContext.d.ts","sourceRoot":"","sources":["../../../src/queryExecutionContext/hybridQueryExecutionContext.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,KAAK,EACV,WAAW,EAEX,6BAA6B,EAE7B,UAAU,EACV,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,cAAc;AACd,oBAAY,qCAAqC;IAC/C,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AACD,qBAAa,2BAA4B,YAAW,gBAAgB;IAoBhE,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,6BAA6B;IACrC,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,mBAAmB;IAzB7B,OAAO,CAAC,gCAAgC,CAAmB;IAC3D,OAAO,CAAC,0BAA0B,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,0BAA0B,CAA6B;IAC/D,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,4BAA4B,CAA4D;IAChG,OAAO,CAAC,4BAA4B,CAA4D;IAChG,OAAO,CAAC,gCAAgC,CACuB;IAC/D,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,MAAM,CAAkE;IAChF,OAAO,CAAC,kBAAkB,CAAiC;IAC3D,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,iBAAiB,CAAkB;gBAGjC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,GAAG,YAAY,EAC5B,OAAO,EAAE,WAAW,EACpB,6BAA6B,EAAE,6BAA6B,EAC5D,oBAAoB,EAAE,MAAM,EAC5B,mBAAmB,EAAE,UAAU,EAAE;IAsC9B,QAAQ,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAiB9E,cAAc,IAAI,OAAO;IAenB,SAAS,CAAC,cAAc,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAKzE,iBAAiB;YA2BjB,UAAU;YA4BV,uBAAuB;IAyDrC,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,wBAAwB;YAUlB,KAAK;YAqBL,QAAQ;IAoBtB,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,gCAAgC;YAiD1B,oBAAoB;IAoDlC,OAAO,CAAC,gCAAgC;IAqCxC,OAAO,CAAC,uBAAuB;IAmD/B,OAAO,CAAC,4BAA4B;IAmCpC,OAAO,CAAC,eAAe,CAerB;IAEF,OAAO,CAAC,uBAAuB;CAmChC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C"}
@@ -18,9 +18,10 @@ var HybridQueryExecutionContextBaseStates;
18
18
  HybridQueryExecutionContextBaseStates["done"] = "done";
19
19
  })(HybridQueryExecutionContextBaseStates || (exports.HybridQueryExecutionContextBaseStates = HybridQueryExecutionContextBaseStates = {}));
20
20
  class HybridQueryExecutionContext {
21
- constructor(clientContext, collectionLink, options, partitionedQueryExecutionInfo, correlatedActivityId, allPartitionsRanges) {
21
+ constructor(clientContext, collectionLink, query, options, partitionedQueryExecutionInfo, correlatedActivityId, allPartitionsRanges) {
22
22
  this.clientContext = clientContext;
23
23
  this.collectionLink = collectionLink;
24
+ this.query = query;
24
25
  this.options = options;
25
26
  this.partitionedQueryExecutionInfo = partitionedQueryExecutionInfo;
26
27
  this.correlatedActivityId = correlatedActivityId;
@@ -367,6 +368,7 @@ class HybridQueryExecutionContext {
367
368
  }
368
369
  }
369
370
  createComponentExecutionContexts() {
371
+ var _a, _b;
370
372
  // rewrite queries based on global statistics
371
373
  let queryInfos = this.partitionedQueryExecutionInfo.hybridSearchQueryInfo.componentQueryInfos;
372
374
  if (this.partitionedQueryExecutionInfo.hybridSearchQueryInfo.requiresGlobalStatistics) {
@@ -379,7 +381,13 @@ class HybridQueryExecutionContext {
379
381
  queryInfo: componentQueryInfo,
380
382
  queryRanges: this.partitionedQueryExecutionInfo.queryRanges,
381
383
  };
382
- const executionContext = new pipelinedQueryExecutionContext_js_1.PipelinedQueryExecutionContext(this.clientContext, this.collectionLink, componentQueryInfo.rewrittenQuery, this.options, componentPartitionExecutionInfo, this.correlatedActivityId, this.emitRawOrderByPayload);
384
+ const rewrittenSqlQuerySpec = typeof this.query === "string"
385
+ ? componentQueryInfo.rewrittenQuery
386
+ : {
387
+ query: componentQueryInfo.rewrittenQuery,
388
+ parameters: (_b = (_a = this.query) === null || _a === void 0 ? void 0 : _a.parameters) !== null && _b !== void 0 ? _b : [],
389
+ };
390
+ const executionContext = new pipelinedQueryExecutionContext_js_1.PipelinedQueryExecutionContext(this.clientContext, this.collectionLink, rewrittenSqlQuerySpec, this.options, componentPartitionExecutionInfo, this.correlatedActivityId, this.emitRawOrderByPayload);
383
391
  this.componentsExecutionContext.push(executionContext);
384
392
  }
385
393
  this.isSingleComponent = this.componentsExecutionContext.length === 1;