couchbase 4.3.1 → 4.4.1-dev.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 (1104) hide show
  1. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +19 -32
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
  3. package/deps/couchbase-cxx-client/CMakeLists.txt +16 -9
  4. package/deps/couchbase-cxx-client/README.md +39 -44
  5. package/deps/couchbase-cxx-client/cmake/0001-fix-build-for-mingw-w64-ucrt-x86_64-toolchain.patch +3 -4
  6. package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +2 -1
  7. package/deps/couchbase-cxx-client/cmake/Packaging.cmake +41 -0
  8. package/deps/couchbase-cxx-client/cmake/Sanitizers.cmake +1 -0
  9. package/deps/couchbase-cxx-client/cmake/VersionInfo.cmake +5 -5
  10. package/deps/couchbase-cxx-client/cmake/build_version.hxx.in +1 -0
  11. package/deps/couchbase-cxx-client/cmake/couchbase-cxx-client.pc.in +10 -0
  12. package/deps/couchbase-cxx-client/cmake/test_boringssl.cxx +1 -1
  13. package/deps/couchbase-cxx-client/cmake/test_openssl.cxx +1 -1
  14. package/deps/couchbase-cxx-client/core/agent.cxx +353 -304
  15. package/deps/couchbase-cxx-client/core/agent.hxx +94 -76
  16. package/deps/couchbase-cxx-client/core/agent_config.cxx +9 -8
  17. package/deps/couchbase-cxx-client/core/agent_config.hxx +7 -7
  18. package/deps/couchbase-cxx-client/core/agent_group.cxx +132 -120
  19. package/deps/couchbase-cxx-client/core/agent_group.hxx +26 -22
  20. package/deps/couchbase-cxx-client/core/agent_group_config.cxx +8 -7
  21. package/deps/couchbase-cxx-client/core/agent_group_config.hxx +6 -6
  22. package/deps/couchbase-cxx-client/core/agent_unit_test_api.hxx +6 -6
  23. package/deps/couchbase-cxx-client/core/analytics_query_options.cxx +21 -21
  24. package/deps/couchbase-cxx-client/core/analytics_query_options.hxx +19 -18
  25. package/deps/couchbase-cxx-client/core/analytics_scan_consistency.hxx +2 -2
  26. package/deps/couchbase-cxx-client/core/bucket.cxx +848 -776
  27. package/deps/couchbase-cxx-client/core/bucket.hxx +151 -139
  28. package/deps/couchbase-cxx-client/core/capella_ca.hxx +20 -19
  29. package/deps/couchbase-cxx-client/core/cluster.cxx +1240 -927
  30. package/deps/couchbase-cxx-client/core/cluster.hxx +254 -167
  31. package/deps/couchbase-cxx-client/core/cluster_agent.cxx +7 -7
  32. package/deps/couchbase-cxx-client/core/cluster_agent.hxx +4 -4
  33. package/deps/couchbase-cxx-client/core/cluster_agent_config.cxx +8 -7
  34. package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +6 -6
  35. package/deps/couchbase-cxx-client/core/cluster_options.cxx +17 -17
  36. package/deps/couchbase-cxx-client/core/cluster_options.hxx +50 -47
  37. package/deps/couchbase-cxx-client/core/cluster_state.hxx +3 -3
  38. package/deps/couchbase-cxx-client/core/collection_id_cache_entry.hxx +5 -4
  39. package/deps/couchbase-cxx-client/core/collections_component.cxx +372 -329
  40. package/deps/couchbase-cxx-client/core/collections_component.hxx +17 -13
  41. package/deps/couchbase-cxx-client/core/collections_component_unit_test_api.hxx +6 -6
  42. package/deps/couchbase-cxx-client/core/collections_options.hxx +29 -27
  43. package/deps/couchbase-cxx-client/core/config_listener.hxx +3 -3
  44. package/deps/couchbase-cxx-client/core/config_profile.hxx +3 -3
  45. package/deps/couchbase-cxx-client/core/config_profiles.cxx +31 -31
  46. package/deps/couchbase-cxx-client/core/config_profiles.hxx +19 -19
  47. package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +2 -1
  48. package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +2 -2
  49. package/deps/couchbase-cxx-client/core/crud_component.cxx +310 -276
  50. package/deps/couchbase-cxx-client/core/crud_component.hxx +21 -15
  51. package/deps/couchbase-cxx-client/core/crud_options.hxx +361 -354
  52. package/deps/couchbase-cxx-client/core/crypto/cbcrypto.cc +732 -627
  53. package/deps/couchbase-cxx-client/core/crypto/cbcrypto.h +12 -3
  54. package/deps/couchbase-cxx-client/core/design_document_namespace.hxx +2 -2
  55. package/deps/couchbase-cxx-client/core/design_document_namespace_fmt.hxx +18 -18
  56. package/deps/couchbase-cxx-client/core/diagnostics.hxx +44 -44
  57. package/deps/couchbase-cxx-client/core/diagnostics_fmt.hxx +76 -76
  58. package/deps/couchbase-cxx-client/core/diagnostics_json.hxx +61 -60
  59. package/deps/couchbase-cxx-client/core/diagntostics_options.hxx +14 -14
  60. package/deps/couchbase-cxx-client/core/dispatcher.cxx +4 -3
  61. package/deps/couchbase-cxx-client/core/dispatcher.hxx +8 -7
  62. package/deps/couchbase-cxx-client/core/document_id.cxx +37 -34
  63. package/deps/couchbase-cxx-client/core/document_id.hxx +87 -86
  64. package/deps/couchbase-cxx-client/core/document_id_fmt.hxx +10 -10
  65. package/deps/couchbase-cxx-client/core/durability_options.hxx +50 -49
  66. package/deps/couchbase-cxx-client/core/error_context/analytics.hxx +18 -18
  67. package/deps/couchbase-cxx-client/core/error_context/analytics_json.hxx +115 -0
  68. package/deps/couchbase-cxx-client/core/error_context/base_error_context.hxx +184 -0
  69. package/deps/couchbase-cxx-client/core/error_context/http.hxx +14 -14
  70. package/deps/couchbase-cxx-client/core/error_context/http_json.hxx +90 -0
  71. package/deps/couchbase-cxx-client/core/error_context/internal_tof_metadata_json.hxx +36 -0
  72. package/deps/couchbase-cxx-client/core/error_context/key_value.cxx +27 -27
  73. package/deps/couchbase-cxx-client/core/error_context/key_value.hxx +41 -38
  74. package/deps/couchbase-cxx-client/core/error_context/key_value_error_context.hxx +235 -0
  75. package/deps/couchbase-cxx-client/core/error_context/key_value_error_map_attribute.hxx +142 -0
  76. package/deps/couchbase-cxx-client/core/error_context/key_value_error_map_info.hxx +139 -0
  77. package/deps/couchbase-cxx-client/core/error_context/key_value_extended_error_info.hxx +86 -0
  78. package/deps/couchbase-cxx-client/core/error_context/key_value_json.hxx +83 -0
  79. package/deps/couchbase-cxx-client/core/error_context/key_value_status_code.hxx +109 -0
  80. package/deps/couchbase-cxx-client/core/error_context/query.hxx +18 -18
  81. package/deps/couchbase-cxx-client/core/error_context/query_error_context.hxx +150 -0
  82. package/deps/couchbase-cxx-client/core/error_context/query_json.hxx +114 -0
  83. package/deps/couchbase-cxx-client/core/error_context/query_public_json.hxx +84 -0
  84. package/deps/couchbase-cxx-client/core/error_context/search.hxx +17 -17
  85. package/deps/couchbase-cxx-client/core/error_context/search_json.hxx +101 -0
  86. package/deps/couchbase-cxx-client/core/error_context/subdocument_error_context.hxx +147 -0
  87. package/deps/couchbase-cxx-client/core/error_context/subdocument_json.hxx +48 -0
  88. package/deps/couchbase-cxx-client/{couchbase → core/error_context}/transaction_error_context.hxx +22 -22
  89. package/deps/couchbase-cxx-client/core/error_context/transaction_op_error_context.hxx +79 -0
  90. package/deps/couchbase-cxx-client/core/error_context/view.hxx +17 -17
  91. package/deps/couchbase-cxx-client/core/fmt/key_value_error_map_attribute.hxx +100 -0
  92. package/deps/couchbase-cxx-client/{couchbase → core}/fmt/key_value_extended_error_info.hxx +20 -20
  93. package/deps/couchbase-cxx-client/core/fmt/key_value_status_code.hxx +269 -0
  94. package/deps/couchbase-cxx-client/core/free_form_http_request.cxx +26 -26
  95. package/deps/couchbase-cxx-client/core/free_form_http_request.hxx +34 -33
  96. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +111 -131
  97. package/deps/couchbase-cxx-client/core/impl/analytics.hxx +5 -7
  98. package/deps/couchbase-cxx-client/core/impl/analytics_error_category.cxx +29 -28
  99. package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +615 -516
  100. package/deps/couchbase-cxx-client/core/impl/best_effort_retry_strategy.cxx +53 -50
  101. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +346 -285
  102. package/deps/couchbase-cxx-client/core/impl/boolean_field_query.cxx +10 -10
  103. package/deps/couchbase-cxx-client/core/impl/boolean_query.cxx +27 -27
  104. package/deps/couchbase-cxx-client/core/impl/bootstrap_state_listener.hxx +6 -6
  105. package/deps/couchbase-cxx-client/core/impl/bucket.cxx +39 -34
  106. package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +354 -313
  107. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +430 -325
  108. package/deps/couchbase-cxx-client/core/impl/collection.cxx +1033 -1187
  109. package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +201 -170
  110. package/deps/couchbase-cxx-client/core/impl/common_error_category.cxx +58 -55
  111. package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +46 -32
  112. package/deps/couchbase-cxx-client/core/impl/conjunction_query.cxx +17 -17
  113. package/deps/couchbase-cxx-client/core/impl/date_range.cxx +24 -20
  114. package/deps/couchbase-cxx-client/core/impl/date_range_facet.cxx +22 -22
  115. package/deps/couchbase-cxx-client/core/impl/date_range_facet_result.cxx +6 -6
  116. package/deps/couchbase-cxx-client/core/impl/date_range_query.cxx +50 -48
  117. package/deps/couchbase-cxx-client/core/impl/diagnostics.cxx +211 -198
  118. package/deps/couchbase-cxx-client/core/impl/diagnostics.hxx +7 -6
  119. package/deps/couchbase-cxx-client/core/impl/disjunction_query.cxx +18 -17
  120. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +92 -75
  121. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.hxx +24 -20
  122. package/deps/couchbase-cxx-client/core/impl/doc_id_query.cxx +9 -9
  123. package/deps/couchbase-cxx-client/core/impl/encoded_search_facet.hxx +2 -2
  124. package/deps/couchbase-cxx-client/core/impl/encoded_search_query.hxx +2 -2
  125. package/deps/couchbase-cxx-client/core/impl/encoded_search_sort.hxx +2 -2
  126. package/deps/couchbase-cxx-client/core/impl/error.cxx +171 -0
  127. package/deps/couchbase-cxx-client/core/impl/error.hxx +64 -0
  128. package/deps/couchbase-cxx-client/core/impl/error_context.cxx +56 -0
  129. package/deps/couchbase-cxx-client/core/impl/expiry.cxx +66 -53
  130. package/deps/couchbase-cxx-client/core/impl/fail_fast_retry_strategy.cxx +5 -4
  131. package/deps/couchbase-cxx-client/core/impl/field_level_encryption_error_category.cxx +30 -28
  132. package/deps/couchbase-cxx-client/core/impl/geo_bounding_box_query.cxx +17 -17
  133. package/deps/couchbase-cxx-client/core/impl/geo_distance_query.cxx +14 -14
  134. package/deps/couchbase-cxx-client/core/impl/geo_polygon_query.cxx +17 -17
  135. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.hxx +26 -22
  136. package/deps/couchbase-cxx-client/core/impl/get_any_replica.hxx +25 -23
  137. package/deps/couchbase-cxx-client/core/impl/get_replica.cxx +18 -15
  138. package/deps/couchbase-cxx-client/core/impl/get_replica.hxx +23 -18
  139. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.cxx +16 -14
  140. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.hxx +16 -15
  141. package/deps/couchbase-cxx-client/core/impl/internal_error_context.cxx +79 -0
  142. package/deps/couchbase-cxx-client/core/impl/internal_error_context.hxx +52 -0
  143. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.cxx +18 -15
  144. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.hxx +16 -15
  145. package/deps/couchbase-cxx-client/core/impl/internal_scan_result.hxx +7 -7
  146. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.cxx +25 -22
  147. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.hxx +32 -31
  148. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.cxx +15 -13
  149. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.hxx +10 -9
  150. package/deps/couchbase-cxx-client/core/impl/internal_search_result.cxx +30 -22
  151. package/deps/couchbase-cxx-client/core/impl/internal_search_result.hxx +10 -9
  152. package/deps/couchbase-cxx-client/core/impl/internal_search_row.cxx +10 -10
  153. package/deps/couchbase-cxx-client/core/impl/internal_search_row.hxx +16 -16
  154. package/deps/couchbase-cxx-client/core/impl/internal_search_row_location.hxx +2 -2
  155. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.cxx +68 -65
  156. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.hxx +16 -13
  157. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.cxx +16 -14
  158. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.hxx +15 -15
  159. package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +73 -72
  160. package/deps/couchbase-cxx-client/core/impl/key_value_error_context.cxx +65 -65
  161. package/deps/couchbase-cxx-client/core/impl/logger.cxx +91 -0
  162. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +32 -29
  163. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +33 -29
  164. package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.cxx +75 -68
  165. package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.hxx +30 -26
  166. package/deps/couchbase-cxx-client/core/impl/management_error_category.cxx +41 -40
  167. package/deps/couchbase-cxx-client/core/impl/match_all_query.cxx +6 -6
  168. package/deps/couchbase-cxx-client/core/impl/match_none_query.cxx +6 -6
  169. package/deps/couchbase-cxx-client/core/impl/match_phrase_query.cxx +13 -13
  170. package/deps/couchbase-cxx-client/core/impl/match_query.cxx +28 -28
  171. package/deps/couchbase-cxx-client/core/impl/network_error_category.cxx +39 -38
  172. package/deps/couchbase-cxx-client/core/impl/numeric_range.cxx +6 -6
  173. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet.cxx +22 -22
  174. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet_result.cxx +6 -6
  175. package/deps/couchbase-cxx-client/core/impl/numeric_range_query.cxx +22 -22
  176. package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +294 -277
  177. package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
  178. package/deps/couchbase-cxx-client/core/impl/observe_seqno.cxx +21 -18
  179. package/deps/couchbase-cxx-client/core/impl/observe_seqno.hxx +31 -26
  180. package/deps/couchbase-cxx-client/core/impl/phrase_query.cxx +10 -10
  181. package/deps/couchbase-cxx-client/core/impl/prefix_query.cxx +10 -10
  182. package/deps/couchbase-cxx-client/core/impl/query.cxx +163 -154
  183. package/deps/couchbase-cxx-client/core/impl/query.hxx +6 -7
  184. package/deps/couchbase-cxx-client/core/impl/query_error_category.cxx +22 -21
  185. package/deps/couchbase-cxx-client/core/impl/query_error_context.cxx +45 -45
  186. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +488 -408
  187. package/deps/couchbase-cxx-client/core/impl/query_string_query.cxx +7 -7
  188. package/deps/couchbase-cxx-client/core/impl/regexp_query.cxx +10 -10
  189. package/deps/couchbase-cxx-client/core/impl/replica_utils.cxx +66 -0
  190. package/deps/couchbase-cxx-client/core/impl/replica_utils.hxx +48 -0
  191. package/deps/couchbase-cxx-client/core/impl/retry_action.cxx +3 -3
  192. package/deps/couchbase-cxx-client/core/impl/retry_reason.cxx +129 -56
  193. package/deps/couchbase-cxx-client/core/impl/retry_reason.hxx +28 -0
  194. package/deps/couchbase-cxx-client/core/impl/scan_result.cxx +53 -49
  195. package/deps/couchbase-cxx-client/core/impl/scope.cxx +103 -94
  196. package/deps/couchbase-cxx-client/core/impl/search.cxx +139 -130
  197. package/deps/couchbase-cxx-client/core/impl/search.hxx +4 -4
  198. package/deps/couchbase-cxx-client/core/impl/search_error_category.cxx +18 -17
  199. package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +492 -390
  200. package/deps/couchbase-cxx-client/core/impl/search_meta_data.cxx +3 -3
  201. package/deps/couchbase-cxx-client/core/impl/search_request.cxx +78 -78
  202. package/deps/couchbase-cxx-client/core/impl/search_result.cxx +5 -5
  203. package/deps/couchbase-cxx-client/core/impl/search_row.cxx +7 -7
  204. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +9 -8
  205. package/deps/couchbase-cxx-client/core/impl/search_row_locations.cxx +8 -7
  206. package/deps/couchbase-cxx-client/core/impl/search_sort_field.cxx +53 -53
  207. package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +49 -48
  208. package/deps/couchbase-cxx-client/core/impl/search_sort_id.cxx +10 -10
  209. package/deps/couchbase-cxx-client/core/impl/search_sort_score.cxx +10 -10
  210. package/deps/couchbase-cxx-client/core/impl/streaming_json_lexer_error_category.cxx +70 -68
  211. package/deps/couchbase-cxx-client/core/impl/subdoc/array_add_unique.cxx +6 -6
  212. package/deps/couchbase-cxx-client/core/impl/subdoc/array_append.cxx +6 -6
  213. package/deps/couchbase-cxx-client/core/impl/subdoc/array_insert.cxx +6 -6
  214. package/deps/couchbase-cxx-client/core/impl/subdoc/array_prepend.cxx +6 -6
  215. package/deps/couchbase-cxx-client/core/impl/subdoc/command.hxx +5 -5
  216. package/deps/couchbase-cxx-client/core/impl/subdoc/command_bundle.hxx +11 -11
  217. package/deps/couchbase-cxx-client/core/impl/subdoc/count.cxx +6 -6
  218. package/deps/couchbase-cxx-client/core/impl/subdoc/counter.cxx +6 -6
  219. package/deps/couchbase-cxx-client/core/impl/subdoc/exists.cxx +6 -6
  220. package/deps/couchbase-cxx-client/core/impl/subdoc/get.cxx +6 -6
  221. package/deps/couchbase-cxx-client/core/impl/subdoc/insert.cxx +6 -6
  222. package/deps/couchbase-cxx-client/core/impl/subdoc/join_values.cxx +25 -25
  223. package/deps/couchbase-cxx-client/core/impl/subdoc/lookup_in_macro.cxx +61 -60
  224. package/deps/couchbase-cxx-client/core/impl/subdoc/lookup_in_specs.cxx +9 -9
  225. package/deps/couchbase-cxx-client/core/impl/subdoc/mutate_in_macro.cxx +48 -39
  226. package/deps/couchbase-cxx-client/core/impl/subdoc/mutate_in_specs.cxx +9 -9
  227. package/deps/couchbase-cxx-client/core/impl/subdoc/opcode.hxx +16 -16
  228. package/deps/couchbase-cxx-client/core/impl/subdoc/path_flags.hxx +40 -17
  229. package/deps/couchbase-cxx-client/core/impl/subdoc/remove.cxx +6 -6
  230. package/deps/couchbase-cxx-client/core/impl/subdoc/replace.cxx +6 -6
  231. package/deps/couchbase-cxx-client/core/impl/subdoc/upsert.cxx +6 -6
  232. package/deps/couchbase-cxx-client/core/impl/term_facet.cxx +8 -8
  233. package/deps/couchbase-cxx-client/core/impl/term_facet_result.cxx +6 -6
  234. package/deps/couchbase-cxx-client/core/impl/term_query.cxx +25 -25
  235. package/deps/couchbase-cxx-client/core/impl/term_range_query.cxx +22 -22
  236. package/deps/couchbase-cxx-client/core/impl/transaction_error_category.cxx +21 -20
  237. package/deps/couchbase-cxx-client/core/impl/transaction_get_result.cxx +41 -30
  238. package/deps/couchbase-cxx-client/core/impl/transaction_op_error_category.cxx +55 -56
  239. package/deps/couchbase-cxx-client/core/impl/vector_query.cxx +15 -10
  240. package/deps/couchbase-cxx-client/core/impl/vector_search.cxx +9 -9
  241. package/deps/couchbase-cxx-client/core/impl/view_error_category.cxx +17 -16
  242. package/deps/couchbase-cxx-client/core/impl/wildcard_query.cxx +10 -10
  243. package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +30 -29
  244. package/deps/couchbase-cxx-client/core/io/dns_client.cxx +257 -232
  245. package/deps/couchbase-cxx-client/core/io/dns_client.hxx +19 -18
  246. package/deps/couchbase-cxx-client/core/io/dns_codec.hxx +156 -154
  247. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +114 -109
  248. package/deps/couchbase-cxx-client/core/io/dns_config.hxx +15 -13
  249. package/deps/couchbase-cxx-client/core/io/dns_message.hxx +365 -342
  250. package/deps/couchbase-cxx-client/core/io/http_command.hxx +155 -134
  251. package/deps/couchbase-cxx-client/core/io/http_context.hxx +5 -5
  252. package/deps/couchbase-cxx-client/core/io/http_message.hxx +75 -71
  253. package/deps/couchbase-cxx-client/core/io/http_parser.cxx +70 -67
  254. package/deps/couchbase-cxx-client/core/io/http_parser.hxx +18 -18
  255. package/deps/couchbase-cxx-client/core/io/http_session.hxx +620 -520
  256. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +406 -315
  257. package/deps/couchbase-cxx-client/core/io/http_traits.hxx +7 -0
  258. package/deps/couchbase-cxx-client/core/io/ip_protocol.hxx +3 -3
  259. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +298 -278
  260. package/deps/couchbase-cxx-client/core/io/mcbp_context.hxx +7 -6
  261. package/deps/couchbase-cxx-client/core/io/mcbp_message.cxx +8 -8
  262. package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +19 -19
  263. package/deps/couchbase-cxx-client/core/io/mcbp_parser.cxx +60 -51
  264. package/deps/couchbase-cxx-client/core/io/mcbp_parser.hxx +21 -17
  265. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +1769 -1616
  266. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +63 -57
  267. package/deps/couchbase-cxx-client/core/io/query_cache.hxx +34 -34
  268. package/deps/couchbase-cxx-client/core/io/retry_context.hxx +45 -45
  269. package/deps/couchbase-cxx-client/core/io/retry_orchestrator.hxx +52 -42
  270. package/deps/couchbase-cxx-client/core/io/streams.hxx +210 -193
  271. package/deps/couchbase-cxx-client/core/json_string.hxx +47 -47
  272. package/deps/couchbase-cxx-client/core/key_value_config.cxx +8 -8
  273. package/deps/couchbase-cxx-client/core/key_value_config.hxx +12 -11
  274. package/deps/couchbase-cxx-client/core/logger/configuration.hxx +35 -35
  275. package/deps/couchbase-cxx-client/core/logger/custom_rotating_file_sink.cxx +73 -72
  276. package/deps/couchbase-cxx-client/core/logger/custom_rotating_file_sink.hxx +20 -18
  277. package/deps/couchbase-cxx-client/core/logger/level.hxx +9 -1
  278. package/deps/couchbase-cxx-client/core/logger/logger.cxx +279 -252
  279. package/deps/couchbase-cxx-client/core/logger/logger.hxx +110 -58
  280. package/deps/couchbase-cxx-client/core/management/analytics_dataset.hxx +4 -4
  281. package/deps/couchbase-cxx-client/core/management/analytics_index.hxx +4 -4
  282. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external.cxx +35 -33
  283. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external.hxx +36 -35
  284. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external_json.hxx +24 -20
  285. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote.cxx +66 -65
  286. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote.hxx +77 -70
  287. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote_json.hxx +38 -32
  288. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external.cxx +26 -25
  289. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external.hxx +30 -30
  290. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external_json.hxx +18 -16
  291. package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +109 -91
  292. package/deps/couchbase-cxx-client/core/management/bucket_settings_json.hxx +112 -94
  293. package/deps/couchbase-cxx-client/core/management/design_document.hxx +9 -9
  294. package/deps/couchbase-cxx-client/core/management/eventing_function.hxx +124 -121
  295. package/deps/couchbase-cxx-client/core/management/eventing_function_json.hxx +228 -184
  296. package/deps/couchbase-cxx-client/core/management/eventing_status.hxx +41 -41
  297. package/deps/couchbase-cxx-client/core/management/eventing_status_json.hxx +53 -45
  298. package/deps/couchbase-cxx-client/core/management/rbac.hxx +33 -28
  299. package/deps/couchbase-cxx-client/core/management/rbac_fmt.hxx +21 -21
  300. package/deps/couchbase-cxx-client/core/management/rbac_json.hxx +132 -125
  301. package/deps/couchbase-cxx-client/core/management/search_index.cxx +79 -0
  302. package/deps/couchbase-cxx-client/core/management/search_index.hxx +11 -10
  303. package/deps/couchbase-cxx-client/core/management/search_index_json.hxx +27 -26
  304. package/deps/couchbase-cxx-client/core/mcbp/barrier_frame.hxx +4 -3
  305. package/deps/couchbase-cxx-client/core/mcbp/big_endian.cxx +22 -22
  306. package/deps/couchbase-cxx-client/core/mcbp/buffer_writer.cxx +22 -19
  307. package/deps/couchbase-cxx-client/core/mcbp/buffer_writer.hxx +9 -9
  308. package/deps/couchbase-cxx-client/core/mcbp/codec.cxx +419 -397
  309. package/deps/couchbase-cxx-client/core/mcbp/codec.hxx +14 -12
  310. package/deps/couchbase-cxx-client/core/mcbp/command_code.cxx +48 -48
  311. package/deps/couchbase-cxx-client/core/mcbp/completion_token.hxx +33 -33
  312. package/deps/couchbase-cxx-client/core/mcbp/datatype.hxx +3 -3
  313. package/deps/couchbase-cxx-client/core/mcbp/durability_level.hxx +8 -7
  314. package/deps/couchbase-cxx-client/core/mcbp/durability_level_frame.hxx +3 -2
  315. package/deps/couchbase-cxx-client/core/mcbp/durability_timeout_frame.hxx +4 -3
  316. package/deps/couchbase-cxx-client/core/mcbp/open_tracing_frame.hxx +3 -2
  317. package/deps/couchbase-cxx-client/core/mcbp/operation_consumer.cxx +3 -3
  318. package/deps/couchbase-cxx-client/core/mcbp/operation_consumer.hxx +9 -9
  319. package/deps/couchbase-cxx-client/core/mcbp/operation_queue.cxx +76 -70
  320. package/deps/couchbase-cxx-client/core/mcbp/operation_queue.hxx +18 -17
  321. package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +65 -51
  322. package/deps/couchbase-cxx-client/core/mcbp/packet.hxx +25 -25
  323. package/deps/couchbase-cxx-client/core/mcbp/preserve_expiry_frame.hxx +4 -2
  324. package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +3 -2
  325. package/deps/couchbase-cxx-client/core/mcbp/queue_request.cxx +65 -62
  326. package/deps/couchbase-cxx-client/core/mcbp/queue_request.hxx +54 -52
  327. package/deps/couchbase-cxx-client/core/mcbp/queue_request_connection_info.hxx +3 -3
  328. package/deps/couchbase-cxx-client/core/mcbp/queue_response.hxx +7 -7
  329. package/deps/couchbase-cxx-client/core/mcbp/read_units_frame.hxx +3 -2
  330. package/deps/couchbase-cxx-client/core/mcbp/server_duration.cxx +7 -7
  331. package/deps/couchbase-cxx-client/core/mcbp/server_duration_frame.hxx +3 -2
  332. package/deps/couchbase-cxx-client/core/mcbp/stream_id_frame.hxx +3 -2
  333. package/deps/couchbase-cxx-client/core/mcbp/unsupported_frame.hxx +4 -3
  334. package/deps/couchbase-cxx-client/core/mcbp/user_impersonation_frame.hxx +1 -1
  335. package/deps/couchbase-cxx-client/core/mcbp/write_units_frame.hxx +3 -2
  336. package/deps/couchbase-cxx-client/core/meta/features.hxx +58 -0
  337. package/deps/couchbase-cxx-client/core/meta/version.cxx +255 -204
  338. package/deps/couchbase-cxx-client/core/meta/version.hxx +31 -20
  339. package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +160 -154
  340. package/deps/couchbase-cxx-client/core/metrics/logging_meter.hxx +16 -15
  341. package/deps/couchbase-cxx-client/core/metrics/logging_meter_options.hxx +1 -1
  342. package/deps/couchbase-cxx-client/core/metrics/noop_meter.hxx +14 -13
  343. package/deps/couchbase-cxx-client/core/mozilla_ca_bundle.hxx +2 -2
  344. package/deps/couchbase-cxx-client/core/n1ql_query_options.cxx +31 -31
  345. package/deps/couchbase-cxx-client/core/n1ql_query_options.hxx +22 -21
  346. package/deps/couchbase-cxx-client/core/operation_map.hxx +3 -3
  347. package/deps/couchbase-cxx-client/core/operations/document_analytics.cxx +187 -176
  348. package/deps/couchbase-cxx-client/core/operations/document_analytics.hxx +79 -71
  349. package/deps/couchbase-cxx-client/core/operations/document_append.cxx +18 -15
  350. package/deps/couchbase-cxx-client/core/operations/document_append.hxx +18 -16
  351. package/deps/couchbase-cxx-client/core/operations/document_decrement.cxx +26 -23
  352. package/deps/couchbase-cxx-client/core/operations/document_decrement.hxx +24 -20
  353. package/deps/couchbase-cxx-client/core/operations/document_exists.cxx +23 -21
  354. package/deps/couchbase-cxx-client/core/operations/document_exists.hxx +25 -23
  355. package/deps/couchbase-cxx-client/core/operations/document_get.cxx +17 -15
  356. package/deps/couchbase-cxx-client/core/operations/document_get.hxx +17 -15
  357. package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +121 -92
  358. package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.cxx +19 -16
  359. package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.hxx +21 -17
  360. package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.cxx +19 -16
  361. package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.hxx +22 -18
  362. package/deps/couchbase-cxx-client/core/operations/document_get_any_replica.hxx +111 -82
  363. package/deps/couchbase-cxx-client/core/operations/document_get_projected.cxx +193 -184
  364. package/deps/couchbase-cxx-client/core/operations/document_get_projected.hxx +25 -21
  365. package/deps/couchbase-cxx-client/core/operations/document_increment.cxx +26 -23
  366. package/deps/couchbase-cxx-client/core/operations/document_increment.hxx +24 -20
  367. package/deps/couchbase-cxx-client/core/operations/document_insert.cxx +23 -20
  368. package/deps/couchbase-cxx-client/core/operations/document_insert.hxx +20 -18
  369. package/deps/couchbase-cxx-client/core/operations/document_lookup_in.cxx +80 -67
  370. package/deps/couchbase-cxx-client/core/operations/document_lookup_in.hxx +31 -27
  371. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +187 -149
  372. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +190 -145
  373. package/deps/couchbase-cxx-client/core/operations/document_mutate_in.cxx +98 -80
  374. package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +38 -33
  375. package/deps/couchbase-cxx-client/core/operations/document_prepend.cxx +18 -15
  376. package/deps/couchbase-cxx-client/core/operations/document_prepend.hxx +18 -16
  377. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +367 -356
  378. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +83 -79
  379. package/deps/couchbase-cxx-client/core/operations/document_remove.cxx +18 -15
  380. package/deps/couchbase-cxx-client/core/operations/document_remove.hxx +18 -16
  381. package/deps/couchbase-cxx-client/core/operations/document_replace.cxx +27 -24
  382. package/deps/couchbase-cxx-client/core/operations/document_replace.hxx +22 -20
  383. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +322 -308
  384. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +125 -121
  385. package/deps/couchbase-cxx-client/core/operations/document_touch.cxx +16 -14
  386. package/deps/couchbase-cxx-client/core/operations/document_touch.hxx +19 -17
  387. package/deps/couchbase-cxx-client/core/operations/document_unlock.cxx +16 -14
  388. package/deps/couchbase-cxx-client/core/operations/document_unlock.hxx +19 -17
  389. package/deps/couchbase-cxx-client/core/operations/document_upsert.cxx +26 -23
  390. package/deps/couchbase-cxx-client/core/operations/document_upsert.hxx +21 -19
  391. package/deps/couchbase-cxx-client/core/operations/document_view.cxx +169 -159
  392. package/deps/couchbase-cxx-client/core/operations/document_view.hxx +68 -65
  393. package/deps/couchbase-cxx-client/core/operations/http_noop.cxx +38 -35
  394. package/deps/couchbase-cxx-client/core/operations/http_noop.hxx +12 -10
  395. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +58 -56
  396. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.hxx +20 -17
  397. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +49 -44
  398. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.hxx +18 -15
  399. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.cxx +46 -43
  400. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.hxx +16 -13
  401. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +48 -43
  402. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.hxx +17 -14
  403. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +48 -43
  404. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.hxx +17 -14
  405. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +38 -35
  406. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.hxx +16 -14
  407. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.cxx +68 -66
  408. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.hxx +20 -17
  409. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +56 -51
  410. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.hxx +19 -16
  411. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.cxx +44 -42
  412. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.hxx +16 -13
  413. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +49 -43
  414. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.hxx +23 -20
  415. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.cxx +52 -51
  416. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.hxx +33 -30
  417. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +46 -42
  418. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.hxx +22 -19
  419. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +70 -67
  420. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.hxx +22 -19
  421. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +92 -85
  422. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.hxx +27 -24
  423. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.cxx +52 -51
  424. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.hxx +33 -30
  425. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_utils.hxx +6 -4
  426. package/deps/couchbase-cxx-client/core/operations/management/analytics_problem.hxx +2 -2
  427. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +158 -149
  428. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.hxx +14 -12
  429. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +118 -42
  430. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.hxx +47 -22
  431. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +19 -18
  432. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.hxx +13 -11
  433. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +25 -24
  434. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.hxx +13 -11
  435. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +24 -22
  436. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.hxx +14 -12
  437. package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.cxx +25 -23
  438. package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.hxx +13 -11
  439. package/deps/couchbase-cxx-client/core/operations/management/bucket_update.cxx +112 -107
  440. package/deps/couchbase-cxx-client/core/operations/management/bucket_update.hxx +15 -13
  441. package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +22 -20
  442. package/deps/couchbase-cxx-client/core/operations/management/change_password.hxx +13 -11
  443. package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.cxx +52 -50
  444. package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.hxx +31 -29
  445. package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.cxx +14 -12
  446. package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.hxx +13 -11
  447. package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +48 -46
  448. package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +19 -16
  449. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +37 -35
  450. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.hxx +16 -14
  451. package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +49 -47
  452. package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +19 -16
  453. package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.cxx +11 -9
  454. package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.hxx +17 -13
  455. package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +210 -198
  456. package/deps/couchbase-cxx-client/core/operations/management/error_utils.hxx +3 -1
  457. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +30 -28
  458. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.hxx +17 -14
  459. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +31 -29
  460. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.hxx +17 -14
  461. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.cxx +49 -43
  462. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.hxx +17 -14
  463. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +29 -27
  464. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.hxx +18 -15
  465. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.cxx +45 -39
  466. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.hxx +17 -14
  467. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +30 -28
  468. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.hxx +17 -14
  469. package/deps/couchbase-cxx-client/core/operations/management/eventing_problem.hxx +3 -3
  470. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +30 -28
  471. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.hxx +17 -14
  472. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +30 -28
  473. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.hxx +17 -14
  474. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +328 -318
  475. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.hxx +17 -14
  476. package/deps/couchbase-cxx-client/core/operations/management/freeform.cxx +23 -22
  477. package/deps/couchbase-cxx-client/core/operations/management/freeform.hxx +19 -17
  478. package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +18 -17
  479. package/deps/couchbase-cxx-client/core/operations/management/group_drop.hxx +13 -11
  480. package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +25 -23
  481. package/deps/couchbase-cxx-client/core/operations/management/group_get.hxx +14 -12
  482. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +23 -22
  483. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.hxx +13 -11
  484. package/deps/couchbase-cxx-client/core/operations/management/group_upsert.cxx +58 -55
  485. package/deps/couchbase-cxx-client/core/operations/management/group_upsert.hxx +14 -12
  486. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.cxx +53 -48
  487. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +25 -22
  488. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +75 -67
  489. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +128 -122
  490. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +31 -28
  491. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +95 -93
  492. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +26 -24
  493. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +97 -93
  494. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +24 -21
  495. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.cxx +66 -62
  496. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +24 -22
  497. package/deps/couchbase-cxx-client/core/operations/management/role_get_all.cxx +24 -22
  498. package/deps/couchbase-cxx-client/core/operations/management/role_get_all.hxx +13 -11
  499. package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +38 -36
  500. package/deps/couchbase-cxx-client/core/operations/management/scope_create.hxx +15 -13
  501. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +33 -32
  502. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.hxx +15 -13
  503. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +27 -25
  504. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.hxx +14 -12
  505. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +12 -10
  506. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +13 -11
  507. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +72 -67
  508. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +20 -18
  509. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +62 -59
  510. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +19 -16
  511. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +62 -59
  512. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +19 -17
  513. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +62 -59
  514. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +19 -16
  515. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +58 -55
  516. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +18 -15
  517. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +59 -56
  518. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +18 -16
  519. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +51 -46
  520. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +18 -15
  521. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +66 -61
  522. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +19 -17
  523. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +38 -36
  524. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.hxx +17 -14
  525. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +98 -95
  526. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +20 -17
  527. package/deps/couchbase-cxx-client/core/operations/management/user_drop.cxx +18 -17
  528. package/deps/couchbase-cxx-client/core/operations/management/user_drop.hxx +16 -12
  529. package/deps/couchbase-cxx-client/core/operations/management/user_get.cxx +25 -23
  530. package/deps/couchbase-cxx-client/core/operations/management/user_get.hxx +17 -13
  531. package/deps/couchbase-cxx-client/core/operations/management/user_get_all.cxx +24 -22
  532. package/deps/couchbase-cxx-client/core/operations/management/user_get_all.hxx +16 -12
  533. package/deps/couchbase-cxx-client/core/operations/management/user_upsert.cxx +63 -60
  534. package/deps/couchbase-cxx-client/core/operations/management/user_upsert.hxx +17 -13
  535. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +16 -12
  536. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.hxx +15 -13
  537. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +40 -35
  538. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.hxx +16 -14
  539. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +73 -69
  540. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.hxx +16 -13
  541. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +39 -35
  542. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.hxx +15 -12
  543. package/deps/couchbase-cxx-client/core/origin.cxx +259 -249
  544. package/deps/couchbase-cxx-client/core/origin.hxx +55 -49
  545. package/deps/couchbase-cxx-client/core/pending_operation.hxx +3 -3
  546. package/deps/couchbase-cxx-client/core/ping_collector.hxx +3 -3
  547. package/deps/couchbase-cxx-client/core/ping_options.hxx +30 -30
  548. package/deps/couchbase-cxx-client/core/ping_reporter.hxx +3 -3
  549. package/deps/couchbase-cxx-client/core/platform/backtrace.c +100 -91
  550. package/deps/couchbase-cxx-client/core/platform/base64.cc +135 -134
  551. package/deps/couchbase-cxx-client/core/platform/dirutils.cc +66 -63
  552. package/deps/couchbase-cxx-client/core/platform/random.cc +43 -42
  553. package/deps/couchbase-cxx-client/core/platform/random.h +4 -4
  554. package/deps/couchbase-cxx-client/core/platform/string_hex.cc +42 -40
  555. package/deps/couchbase-cxx-client/core/platform/terminate_handler.cc +54 -52
  556. package/deps/couchbase-cxx-client/core/platform/uuid.cc +47 -47
  557. package/deps/couchbase-cxx-client/core/protocol/client_opcode.hxx +336 -327
  558. package/deps/couchbase-cxx-client/core/protocol/client_opcode_fmt.hxx +291 -291
  559. package/deps/couchbase-cxx-client/core/protocol/client_request.cxx +13 -10
  560. package/deps/couchbase-cxx-client/core/protocol/client_request.hxx +133 -130
  561. package/deps/couchbase-cxx-client/core/protocol/client_response.cxx +40 -40
  562. package/deps/couchbase-cxx-client/core/protocol/client_response.hxx +153 -150
  563. package/deps/couchbase-cxx-client/core/protocol/cmd_append.cxx +24 -23
  564. package/deps/couchbase-cxx-client/core/protocol/cmd_append.hxx +65 -65
  565. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.cxx +25 -21
  566. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +33 -25
  567. package/deps/couchbase-cxx-client/core/protocol/cmd_decrement.cxx +38 -38
  568. package/deps/couchbase-cxx-client/core/protocol/cmd_decrement.hxx +87 -87
  569. package/deps/couchbase-cxx-client/core/protocol/cmd_get.cxx +17 -17
  570. package/deps/couchbase-cxx-client/core/protocol/cmd_get.hxx +59 -59
  571. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_lock.cxx +20 -20
  572. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_lock.hxx +72 -72
  573. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_touch.cxx +20 -20
  574. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_touch.hxx +72 -72
  575. package/deps/couchbase-cxx-client/core/protocol/cmd_get_cluster_config.cxx +46 -39
  576. package/deps/couchbase-cxx-client/core/protocol/cmd_get_cluster_config.hxx +57 -49
  577. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collection_id.cxx +17 -17
  578. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collection_id.hxx +59 -59
  579. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collections_manifest.cxx +16 -14
  580. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collections_manifest.hxx +39 -39
  581. package/deps/couchbase-cxx-client/core/protocol/cmd_get_error_map.cxx +18 -17
  582. package/deps/couchbase-cxx-client/core/protocol/cmd_get_error_map.hxx +62 -62
  583. package/deps/couchbase-cxx-client/core/protocol/cmd_get_meta.cxx +24 -23
  584. package/deps/couchbase-cxx-client/core/protocol/cmd_get_meta.hxx +81 -79
  585. package/deps/couchbase-cxx-client/core/protocol/cmd_get_replica.cxx +23 -23
  586. package/deps/couchbase-cxx-client/core/protocol/cmd_get_replica.hxx +44 -44
  587. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.cxx +28 -27
  588. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +106 -105
  589. package/deps/couchbase-cxx-client/core/protocol/cmd_increment.cxx +38 -38
  590. package/deps/couchbase-cxx-client/core/protocol/cmd_increment.hxx +87 -87
  591. package/deps/couchbase-cxx-client/core/protocol/cmd_info.hxx +3 -3
  592. package/deps/couchbase-cxx-client/core/protocol/cmd_insert.cxx +27 -27
  593. package/deps/couchbase-cxx-client/core/protocol/cmd_insert.hxx +81 -81
  594. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in.cxx +54 -51
  595. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in.hxx +90 -90
  596. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in_replica.cxx +54 -51
  597. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in_replica.hxx +88 -88
  598. package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.cxx +105 -97
  599. package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.hxx +161 -153
  600. package/deps/couchbase-cxx-client/core/protocol/cmd_noop.cxx +4 -4
  601. package/deps/couchbase-cxx-client/core/protocol/cmd_noop.hxx +32 -32
  602. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.cxx +36 -34
  603. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +89 -89
  604. package/deps/couchbase-cxx-client/core/protocol/cmd_prepend.cxx +22 -22
  605. package/deps/couchbase-cxx-client/core/protocol/cmd_prepend.hxx +63 -63
  606. package/deps/couchbase-cxx-client/core/protocol/cmd_remove.cxx +23 -23
  607. package/deps/couchbase-cxx-client/core/protocol/cmd_remove.hxx +54 -54
  608. package/deps/couchbase-cxx-client/core/protocol/cmd_replace.cxx +28 -28
  609. package/deps/couchbase-cxx-client/core/protocol/cmd_replace.hxx +88 -88
  610. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_auth.cxx +17 -15
  611. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_auth.hxx +56 -56
  612. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_list_mechs.cxx +24 -19
  613. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_list_mechs.hxx +39 -39
  614. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_step.cxx +17 -15
  615. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_step.hxx +56 -56
  616. package/deps/couchbase-cxx-client/core/protocol/cmd_select_bucket.cxx +6 -6
  617. package/deps/couchbase-cxx-client/core/protocol/cmd_select_bucket.hxx +36 -36
  618. package/deps/couchbase-cxx-client/core/protocol/cmd_touch.cxx +8 -8
  619. package/deps/couchbase-cxx-client/core/protocol/cmd_touch.hxx +38 -38
  620. package/deps/couchbase-cxx-client/core/protocol/cmd_unlock.cxx +5 -5
  621. package/deps/couchbase-cxx-client/core/protocol/cmd_unlock.hxx +36 -36
  622. package/deps/couchbase-cxx-client/core/protocol/cmd_upsert.cxx +28 -28
  623. package/deps/couchbase-cxx-client/core/protocol/cmd_upsert.hxx +83 -83
  624. package/deps/couchbase-cxx-client/core/protocol/datatype.hxx +19 -18
  625. package/deps/couchbase-cxx-client/core/protocol/frame_info_id.hxx +108 -103
  626. package/deps/couchbase-cxx-client/core/protocol/frame_info_id_fmt.hxx +45 -45
  627. package/deps/couchbase-cxx-client/core/protocol/frame_info_utils.cxx +24 -21
  628. package/deps/couchbase-cxx-client/core/protocol/frame_info_utils.hxx +3 -1
  629. package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +211 -175
  630. package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +93 -90
  631. package/deps/couchbase-cxx-client/core/protocol/magic.hxx +24 -24
  632. package/deps/couchbase-cxx-client/core/protocol/magic_fmt.hxx +30 -30
  633. package/deps/couchbase-cxx-client/core/protocol/server_opcode.hxx +11 -11
  634. package/deps/couchbase-cxx-client/core/protocol/server_opcode_fmt.hxx +18 -18
  635. package/deps/couchbase-cxx-client/core/protocol/server_request.hxx +90 -86
  636. package/deps/couchbase-cxx-client/core/protocol/status.cxx +138 -138
  637. package/deps/couchbase-cxx-client/core/protocol/status.hxx +86 -86
  638. package/deps/couchbase-cxx-client/core/query_context.hxx +44 -43
  639. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.cxx +51 -50
  640. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.hxx +26 -25
  641. package/deps/couchbase-cxx-client/core/range_scan_options.cxx +2 -2
  642. package/deps/couchbase-cxx-client/core/range_scan_options.hxx +62 -59
  643. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +515 -470
  644. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.hxx +23 -18
  645. package/deps/couchbase-cxx-client/core/range_scan_orchestrator_options.hxx +10 -10
  646. package/deps/couchbase-cxx-client/core/resource_units.hxx +2 -2
  647. package/deps/couchbase-cxx-client/core/response_handler.hxx +8 -8
  648. package/deps/couchbase-cxx-client/core/retry_orchestrator.cxx +27 -19
  649. package/deps/couchbase-cxx-client/core/retry_orchestrator.hxx +3 -2
  650. package/deps/couchbase-cxx-client/core/sasl/client.cc +22 -18
  651. package/deps/couchbase-cxx-client/core/sasl/client.h +66 -62
  652. package/deps/couchbase-cxx-client/core/sasl/context.cc +4 -4
  653. package/deps/couchbase-cxx-client/core/sasl/context.h +19 -19
  654. package/deps/couchbase-cxx-client/core/sasl/error.h +12 -1
  655. package/deps/couchbase-cxx-client/core/sasl/error_fmt.h +42 -42
  656. package/deps/couchbase-cxx-client/core/sasl/mechanism.cc +13 -10
  657. package/deps/couchbase-cxx-client/core/sasl/mechanism.h +8 -3
  658. package/deps/couchbase-cxx-client/core/sasl/plain/plain.cc +8 -8
  659. package/deps/couchbase-cxx-client/core/sasl/plain/plain.h +25 -24
  660. package/deps/couchbase-cxx-client/core/sasl/scram-sha/scram-sha.cc +225 -218
  661. package/deps/couchbase-cxx-client/core/sasl/scram-sha/scram-sha.h +133 -115
  662. package/deps/couchbase-cxx-client/core/sasl/scram-sha/stringutils.cc +20 -20
  663. package/deps/couchbase-cxx-client/core/scan_result.cxx +38 -38
  664. package/deps/couchbase-cxx-client/core/scan_result.hxx +16 -16
  665. package/deps/couchbase-cxx-client/core/search_highlight_style.hxx +4 -1
  666. package/deps/couchbase-cxx-client/core/search_query_options.cxx +21 -21
  667. package/deps/couchbase-cxx-client/core/search_query_options.hxx +19 -18
  668. package/deps/couchbase-cxx-client/core/search_scan_consistency.hxx +3 -1
  669. package/deps/couchbase-cxx-client/core/seed_config.cxx +10 -7
  670. package/deps/couchbase-cxx-client/core/seed_config.hxx +8 -8
  671. package/deps/couchbase-cxx-client/core/service_type.hxx +7 -7
  672. package/deps/couchbase-cxx-client/core/service_type_fmt.hxx +33 -33
  673. package/deps/couchbase-cxx-client/core/stats_options.hxx +13 -13
  674. package/deps/couchbase-cxx-client/core/subdoc_options.hxx +60 -58
  675. package/deps/couchbase-cxx-client/core/tls_verify_mode.hxx +2 -2
  676. package/deps/couchbase-cxx-client/core/topology/capabilities.hxx +83 -83
  677. package/deps/couchbase-cxx-client/core/topology/capabilities_fmt.hxx +111 -111
  678. package/deps/couchbase-cxx-client/core/topology/collections_manifest.hxx +14 -14
  679. package/deps/couchbase-cxx-client/core/topology/collections_manifest_fmt.hxx +23 -21
  680. package/deps/couchbase-cxx-client/core/topology/collections_manifest_json.hxx +26 -25
  681. package/deps/couchbase-cxx-client/core/topology/configuration.cxx +213 -192
  682. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +104 -91
  683. package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +131 -128
  684. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +276 -242
  685. package/deps/couchbase-cxx-client/core/topology/error_map.hxx +5 -5
  686. package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +65 -60
  687. package/deps/couchbase-cxx-client/core/tracing/constants.hxx +153 -153
  688. package/deps/couchbase-cxx-client/core/tracing/noop_tracer.hxx +29 -28
  689. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_options.hxx +30 -30
  690. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +354 -344
  691. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.hxx +12 -12
  692. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +153 -33
  693. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +30 -118
  694. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +8 -2
  695. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +163 -127
  696. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +358 -334
  697. package/deps/couchbase-cxx-client/core/transactions/atr_ids.cxx +270 -185
  698. package/deps/couchbase-cxx-client/core/transactions/atr_ids.hxx +4 -4
  699. package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +9 -5
  700. package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +194 -154
  701. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +3278 -2159
  702. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +446 -573
  703. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.cxx +15 -10
  704. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.hxx +58 -49
  705. package/deps/couchbase-cxx-client/core/transactions/attempt_state.hxx +72 -72
  706. package/deps/couchbase-cxx-client/core/transactions/binary.cxx +3 -3
  707. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.cxx +2 -2
  708. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.hxx +28 -24
  709. package/deps/couchbase-cxx-client/core/transactions/document_metadata.hxx +68 -68
  710. package/deps/couchbase-cxx-client/core/transactions/durability_level.hxx +53 -53
  711. package/deps/couchbase-cxx-client/core/transactions/error_class.hxx +12 -12
  712. package/deps/couchbase-cxx-client/core/transactions/error_list.hxx +22 -22
  713. package/deps/couchbase-cxx-client/core/transactions/exceptions.cxx +167 -114
  714. package/deps/couchbase-cxx-client/core/transactions/exceptions.hxx +170 -139
  715. package/deps/couchbase-cxx-client/core/transactions/exceptions_fmt.hxx +105 -0
  716. package/deps/couchbase-cxx-client/core/transactions/forward_compat.cxx +220 -0
  717. package/deps/couchbase-cxx-client/core/transactions/forward_compat.hxx +63 -207
  718. package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +110 -102
  719. package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +144 -144
  720. package/deps/couchbase-cxx-client/core/transactions/internal/client_record.hxx +53 -50
  721. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +5 -5
  722. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +38 -35
  723. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +17 -16
  724. package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal.hxx +238 -281
  725. package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal_fmt.hxx +103 -0
  726. package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +52 -29
  727. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_attempt.hxx +3 -3
  728. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +136 -120
  729. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_fields.hxx +2 -1
  730. package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +127 -122
  731. package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +244 -219
  732. package/deps/couchbase-cxx-client/core/transactions/result.cxx +41 -40
  733. package/deps/couchbase-cxx-client/core/transactions/result.hxx +143 -141
  734. package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +21 -20
  735. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +759 -627
  736. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +175 -156
  737. package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +231 -179
  738. package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.cxx +185 -198
  739. package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.hxx +207 -222
  740. package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +15 -11
  741. package/deps/couchbase-cxx-client/core/transactions/transaction_links.cxx +11 -7
  742. package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +222 -201
  743. package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +44 -41
  744. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +167 -125
  745. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +491 -424
  746. package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +25 -19
  747. package/deps/couchbase-cxx-client/core/transactions/uid_generator.cxx +3 -3
  748. package/deps/couchbase-cxx-client/core/transactions/uid_generator.hxx +2 -2
  749. package/deps/couchbase-cxx-client/core/transactions/utils.cxx +82 -69
  750. package/deps/couchbase-cxx-client/core/transactions/waitable_op_list.hxx +154 -140
  751. package/deps/couchbase-cxx-client/core/transactions.hxx +184 -180
  752. package/deps/couchbase-cxx-client/core/utils/binary.cxx +3 -3
  753. package/deps/couchbase-cxx-client/core/utils/binary.hxx +19 -15
  754. package/deps/couchbase-cxx-client/core/utils/byteswap.hxx +17 -17
  755. package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +395 -328
  756. package/deps/couchbase-cxx-client/core/utils/connection_string.hxx +37 -36
  757. package/deps/couchbase-cxx-client/core/utils/crc32.hxx +42 -34
  758. package/deps/couchbase-cxx-client/core/utils/duration_parser.cxx +142 -133
  759. package/deps/couchbase-cxx-client/core/utils/duration_parser.hxx +9 -9
  760. package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +24 -24
  761. package/deps/couchbase-cxx-client/core/utils/json.cxx +234 -228
  762. package/deps/couchbase-cxx-client/core/utils/json.hxx +12 -12
  763. package/deps/couchbase-cxx-client/core/utils/json_stream_control.hxx +8 -8
  764. package/deps/couchbase-cxx-client/core/utils/json_streaming_lexer.cxx +288 -263
  765. package/deps/couchbase-cxx-client/core/utils/json_streaming_lexer.hxx +20 -17
  766. package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +22 -21
  767. package/deps/couchbase-cxx-client/core/utils/movable_function.hxx +78 -76
  768. package/deps/couchbase-cxx-client/core/utils/mutation_token.cxx +7 -3
  769. package/deps/couchbase-cxx-client/core/utils/mutation_token.hxx +3 -1
  770. package/deps/couchbase-cxx-client/core/utils/name_codec.hxx +13 -13
  771. package/deps/couchbase-cxx-client/core/utils/split_string.cxx +9 -9
  772. package/deps/couchbase-cxx-client/core/utils/split_string.hxx +2 -2
  773. package/deps/couchbase-cxx-client/core/utils/unsigned_leb128.hxx +92 -88
  774. package/deps/couchbase-cxx-client/core/utils/url_codec.cxx +301 -297
  775. package/deps/couchbase-cxx-client/core/utils/url_codec.hxx +35 -35
  776. package/deps/couchbase-cxx-client/core/vector_query_combination.hxx +4 -1
  777. package/deps/couchbase-cxx-client/core/view_on_error.hxx +4 -3
  778. package/deps/couchbase-cxx-client/core/view_query_options.cxx +21 -21
  779. package/deps/couchbase-cxx-client/core/view_query_options.hxx +23 -22
  780. package/deps/couchbase-cxx-client/core/view_scan_consistency.hxx +3 -3
  781. package/deps/couchbase-cxx-client/core/view_sort_order.hxx +4 -1
  782. package/deps/couchbase-cxx-client/core/wait_until_ready_options.hxx +11 -10
  783. package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +11 -11
  784. package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +423 -405
  785. package/deps/couchbase-cxx-client/couchbase/analytics_meta_data.hxx +105 -105
  786. package/deps/couchbase-cxx-client/couchbase/analytics_metrics.hxx +120 -118
  787. package/deps/couchbase-cxx-client/couchbase/analytics_options.hxx +318 -292
  788. package/deps/couchbase-cxx-client/couchbase/analytics_result.hxx +56 -55
  789. package/deps/couchbase-cxx-client/couchbase/analytics_scan_consistency.hxx +24 -21
  790. package/deps/couchbase-cxx-client/couchbase/analytics_status.hxx +10 -10
  791. package/deps/couchbase-cxx-client/couchbase/analytics_warning.hxx +44 -43
  792. package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +9 -9
  793. package/deps/couchbase-cxx-client/couchbase/append_options.hxx +51 -47
  794. package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +75 -69
  795. package/deps/couchbase-cxx-client/couchbase/best_effort_retry_strategy.hxx +12 -10
  796. package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +213 -183
  797. package/deps/couchbase-cxx-client/couchbase/boolean_field_query.hxx +38 -38
  798. package/deps/couchbase-cxx-client/couchbase/boolean_query.hxx +166 -157
  799. package/deps/couchbase-cxx-client/couchbase/bucket.hxx +69 -68
  800. package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +97 -88
  801. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +22 -21
  802. package/deps/couchbase-cxx-client/couchbase/cas.hxx +74 -73
  803. package/deps/couchbase-cxx-client/couchbase/certificate_authenticator.hxx +10 -10
  804. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +266 -310
  805. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +235 -241
  806. package/deps/couchbase-cxx-client/couchbase/codec/binary_noop_serializer.hxx +11 -11
  807. package/deps/couchbase-cxx-client/couchbase/codec/codec_flags.hxx +39 -35
  808. package/deps/couchbase-cxx-client/couchbase/codec/encoded_value.hxx +15 -2
  809. package/deps/couchbase-cxx-client/couchbase/codec/json_transcoder.hxx +17 -15
  810. package/deps/couchbase-cxx-client/couchbase/codec/raw_binary_transcoder.hxx +19 -17
  811. package/deps/couchbase-cxx-client/couchbase/codec/raw_json_transcoder.hxx +31 -24
  812. package/deps/couchbase-cxx-client/couchbase/codec/raw_string_transcoder.hxx +20 -18
  813. package/deps/couchbase-cxx-client/couchbase/codec/tao_json_serializer.hxx +38 -30
  814. package/deps/couchbase-cxx-client/couchbase/collection.hxx +1007 -902
  815. package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +115 -107
  816. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +200 -188
  817. package/deps/couchbase-cxx-client/couchbase/common_durability_options.hxx +68 -62
  818. package/deps/couchbase-cxx-client/couchbase/common_options.hxx +67 -67
  819. package/deps/couchbase-cxx-client/couchbase/compression_options.hxx +33 -33
  820. package/deps/couchbase-cxx-client/couchbase/configuration_profile.hxx +12 -11
  821. package/deps/couchbase-cxx-client/couchbase/configuration_profiles_registry.hxx +24 -22
  822. package/deps/couchbase-cxx-client/couchbase/conjunction_query.hxx +47 -45
  823. package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +74 -72
  824. package/deps/couchbase-cxx-client/couchbase/counter_result.hxx +32 -32
  825. package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +9 -10
  826. package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +35 -34
  827. package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +76 -76
  828. package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +44 -44
  829. package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +60 -60
  830. package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +25 -25
  831. package/deps/couchbase-cxx-client/couchbase/create_primary_query_index_options.hxx +95 -94
  832. package/deps/couchbase-cxx-client/couchbase/create_query_index_options.hxx +97 -96
  833. package/deps/couchbase-cxx-client/couchbase/create_scope_options.hxx +9 -9
  834. package/deps/couchbase-cxx-client/couchbase/date_range.hxx +29 -27
  835. package/deps/couchbase-cxx-client/couchbase/date_range_facet.hxx +20 -20
  836. package/deps/couchbase-cxx-client/couchbase/date_range_facet_result.hxx +14 -14
  837. package/deps/couchbase-cxx-client/couchbase/date_range_query.hxx +219 -205
  838. package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +93 -91
  839. package/deps/couchbase-cxx-client/couchbase/diagnostics_options.hxx +42 -41
  840. package/deps/couchbase-cxx-client/couchbase/diagnostics_result.hxx +82 -83
  841. package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +11 -10
  842. package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +62 -62
  843. package/deps/couchbase-cxx-client/couchbase/disjunction_query.hxx +61 -60
  844. package/deps/couchbase-cxx-client/couchbase/dns_options.hxx +30 -30
  845. package/deps/couchbase-cxx-client/couchbase/doc_id_query.hxx +69 -69
  846. package/deps/couchbase-cxx-client/couchbase/drop_bucket_options.hxx +9 -9
  847. package/deps/couchbase-cxx-client/couchbase/drop_collection_options.hxx +9 -9
  848. package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +60 -60
  849. package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +44 -44
  850. package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +60 -60
  851. package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +25 -25
  852. package/deps/couchbase-cxx-client/couchbase/drop_primary_query_index_options.hxx +58 -58
  853. package/deps/couchbase-cxx-client/couchbase/drop_query_index_options.hxx +44 -44
  854. package/deps/couchbase-cxx-client/couchbase/drop_scope_options.hxx +9 -9
  855. package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +9 -9
  856. package/deps/couchbase-cxx-client/couchbase/durability_level.hxx +32 -29
  857. package/deps/couchbase-cxx-client/couchbase/endpoint_diagnostics.hxx +171 -171
  858. package/deps/couchbase-cxx-client/couchbase/endpoint_ping_report.hxx +166 -169
  859. package/deps/couchbase-cxx-client/couchbase/error.hxx +51 -0
  860. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +975 -940
  861. package/deps/couchbase-cxx-client/couchbase/error_context.hxx +19 -152
  862. package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +25 -24
  863. package/deps/couchbase-cxx-client/couchbase/exists_result.hxx +32 -32
  864. package/deps/couchbase-cxx-client/couchbase/fail_fast_retry_strategy.hxx +4 -4
  865. package/deps/couchbase-cxx-client/couchbase/flush_bucket_options.hxx +9 -9
  866. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_scan_consistency.hxx +18 -18
  867. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_status.hxx +42 -42
  868. package/deps/couchbase-cxx-client/couchbase/fmt/cas.hxx +10 -10
  869. package/deps/couchbase-cxx-client/couchbase/fmt/durability_level.hxx +24 -24
  870. package/deps/couchbase-cxx-client/couchbase/fmt/error.hxx +53 -0
  871. package/deps/couchbase-cxx-client/couchbase/fmt/error_context.hxx +43 -0
  872. package/deps/couchbase-cxx-client/couchbase/fmt/mutation_token.hxx +15 -11
  873. package/deps/couchbase-cxx-client/couchbase/fmt/query_profile.hxx +21 -21
  874. package/deps/couchbase-cxx-client/couchbase/fmt/query_scan_consistency.hxx +18 -18
  875. package/deps/couchbase-cxx-client/couchbase/fmt/query_status.hxx +42 -42
  876. package/deps/couchbase-cxx-client/couchbase/fmt/retry_reason.hxx +75 -75
  877. package/deps/couchbase-cxx-client/couchbase/fmt/search_scan_consistency.hxx +15 -15
  878. package/deps/couchbase-cxx-client/couchbase/fmt/tls_verify_mode.hxx +18 -18
  879. package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +15 -11
  880. package/deps/couchbase-cxx-client/couchbase/fork_event.hxx +12 -12
  881. package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +9 -9
  882. package/deps/couchbase-cxx-client/couchbase/geo_bounding_box_query.hxx +71 -64
  883. package/deps/couchbase-cxx-client/couchbase/geo_distance_query.hxx +73 -66
  884. package/deps/couchbase-cxx-client/couchbase/geo_point.hxx +2 -2
  885. package/deps/couchbase-cxx-client/couchbase/geo_polygon_query.hxx +40 -39
  886. package/deps/couchbase-cxx-client/couchbase/get_all_buckets_options.hxx +9 -9
  887. package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +25 -25
  888. package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +26 -25
  889. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +27 -25
  890. package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +49 -26
  891. package/deps/couchbase-cxx-client/couchbase/get_all_scopes_options.hxx +9 -9
  892. package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +9 -9
  893. package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +25 -24
  894. package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +25 -24
  895. package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +49 -26
  896. package/deps/couchbase-cxx-client/couchbase/get_bucket_options.hxx +9 -9
  897. package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +9 -9
  898. package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +74 -74
  899. package/deps/couchbase-cxx-client/couchbase/get_options.hxx +63 -60
  900. package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +30 -28
  901. package/deps/couchbase-cxx-client/couchbase/get_replica_result.hxx +79 -75
  902. package/deps/couchbase-cxx-client/couchbase/get_result.hxx +86 -80
  903. package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +9 -9
  904. package/deps/couchbase-cxx-client/couchbase/highlight_style.hxx +14 -14
  905. package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +94 -91
  906. package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +62 -59
  907. package/deps/couchbase-cxx-client/couchbase/ip_protocol.hxx +3 -3
  908. package/deps/couchbase-cxx-client/couchbase/logger.hxx +51 -0
  909. package/deps/couchbase-cxx-client/couchbase/lookup_in_all_replicas_options.hxx +54 -43
  910. package/deps/couchbase-cxx-client/couchbase/lookup_in_any_replica_options.hxx +54 -44
  911. package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +40 -40
  912. package/deps/couchbase-cxx-client/couchbase/lookup_in_replica_result.hxx +38 -35
  913. package/deps/couchbase-cxx-client/couchbase/lookup_in_result.hxx +222 -216
  914. package/deps/couchbase-cxx-client/couchbase/lookup_in_specs.hxx +101 -101
  915. package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +16 -16
  916. package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +16 -16
  917. package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +193 -189
  918. package/deps/couchbase-cxx-client/couchbase/management/bucket_settings.hxx +91 -75
  919. package/deps/couchbase-cxx-client/couchbase/management/collection_spec.hxx +4 -4
  920. package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +10 -10
  921. package/deps/couchbase-cxx-client/couchbase/management/scope_spec.hxx +2 -2
  922. package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +9 -9
  923. package/deps/couchbase-cxx-client/couchbase/match_all_query.hxx +10 -9
  924. package/deps/couchbase-cxx-client/couchbase/match_none_query.hxx +10 -9
  925. package/deps/couchbase-cxx-client/couchbase/match_operator.hxx +15 -14
  926. package/deps/couchbase-cxx-client/couchbase/match_phrase_query.hxx +70 -65
  927. package/deps/couchbase-cxx-client/couchbase/match_query.hxx +115 -114
  928. package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +33 -30
  929. package/deps/couchbase-cxx-client/couchbase/metrics/otel_meter.hxx +86 -74
  930. package/deps/couchbase-cxx-client/couchbase/metrics_options.hxx +34 -34
  931. package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +160 -149
  932. package/deps/couchbase-cxx-client/couchbase/mutate_in_result.hxx +130 -123
  933. package/deps/couchbase-cxx-client/couchbase/mutate_in_specs.hxx +473 -454
  934. package/deps/couchbase-cxx-client/couchbase/mutation_result.hxx +32 -32
  935. package/deps/couchbase-cxx-client/couchbase/mutation_state.hxx +35 -34
  936. package/deps/couchbase-cxx-client/couchbase/mutation_token.hxx +78 -78
  937. package/deps/couchbase-cxx-client/couchbase/network_options.hxx +101 -72
  938. package/deps/couchbase-cxx-client/couchbase/numeric_range.hxx +26 -26
  939. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet.hxx +20 -20
  940. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet_result.hxx +14 -14
  941. package/deps/couchbase-cxx-client/couchbase/numeric_range_query.hxx +97 -95
  942. package/deps/couchbase-cxx-client/couchbase/password_authenticator.hxx +17 -17
  943. package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +11 -10
  944. package/deps/couchbase-cxx-client/couchbase/persist_to.hxx +45 -44
  945. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +69 -65
  946. package/deps/couchbase-cxx-client/couchbase/ping_options.hxx +55 -54
  947. package/deps/couchbase-cxx-client/couchbase/ping_result.hxx +79 -77
  948. package/deps/couchbase-cxx-client/couchbase/prefix_query.hxx +43 -40
  949. package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +51 -47
  950. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +207 -199
  951. package/deps/couchbase-cxx-client/couchbase/query_meta_data.hxx +120 -120
  952. package/deps/couchbase-cxx-client/couchbase/query_metrics.hxx +135 -133
  953. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +518 -493
  954. package/deps/couchbase-cxx-client/couchbase/query_profile.hxx +29 -26
  955. package/deps/couchbase-cxx-client/couchbase/query_result.hxx +56 -55
  956. package/deps/couchbase-cxx-client/couchbase/query_scan_consistency.hxx +24 -21
  957. package/deps/couchbase-cxx-client/couchbase/query_status.hxx +10 -10
  958. package/deps/couchbase-cxx-client/couchbase/query_string_query.hxx +34 -29
  959. package/deps/couchbase-cxx-client/couchbase/query_warning.hxx +75 -71
  960. package/deps/couchbase-cxx-client/couchbase/read_preference.hxx +58 -0
  961. package/deps/couchbase-cxx-client/couchbase/regexp_query.hxx +40 -39
  962. package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +51 -47
  963. package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +25 -25
  964. package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +112 -104
  965. package/deps/couchbase-cxx-client/couchbase/replicate_to.hxx +28 -28
  966. package/deps/couchbase-cxx-client/couchbase/result.hxx +28 -28
  967. package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +11 -10
  968. package/deps/couchbase-cxx-client/couchbase/retry_action.hxx +10 -10
  969. package/deps/couchbase-cxx-client/couchbase/retry_reason.hxx +53 -51
  970. package/deps/couchbase-cxx-client/couchbase/retry_request.hxx +7 -7
  971. package/deps/couchbase-cxx-client/couchbase/retry_strategy.hxx +4 -4
  972. package/deps/couchbase-cxx-client/couchbase/scan_options.hxx +114 -108
  973. package/deps/couchbase-cxx-client/couchbase/scan_result.hxx +97 -96
  974. package/deps/couchbase-cxx-client/couchbase/scan_result_item.hxx +120 -118
  975. package/deps/couchbase-cxx-client/couchbase/scan_type.hxx +237 -232
  976. package/deps/couchbase-cxx-client/couchbase/scope.hxx +164 -157
  977. package/deps/couchbase-cxx-client/couchbase/scope_search_index_manager.hxx +263 -238
  978. package/deps/couchbase-cxx-client/couchbase/search_date_range.hxx +32 -29
  979. package/deps/couchbase-cxx-client/couchbase/search_facet.hxx +25 -25
  980. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +11 -11
  981. package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +11 -1
  982. package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +261 -238
  983. package/deps/couchbase-cxx-client/couchbase/search_meta_data.hxx +37 -37
  984. package/deps/couchbase-cxx-client/couchbase/search_metrics.hxx +84 -83
  985. package/deps/couchbase-cxx-client/couchbase/search_numeric_range.hxx +32 -32
  986. package/deps/couchbase-cxx-client/couchbase/search_options.hxx +449 -435
  987. package/deps/couchbase-cxx-client/couchbase/search_query.hxx +32 -30
  988. package/deps/couchbase-cxx-client/couchbase/search_request.hxx +69 -68
  989. package/deps/couchbase-cxx-client/couchbase/search_result.hxx +29 -26
  990. package/deps/couchbase-cxx-client/couchbase/search_row.hxx +52 -52
  991. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +20 -20
  992. package/deps/couchbase-cxx-client/couchbase/search_row_locations.hxx +39 -38
  993. package/deps/couchbase-cxx-client/couchbase/search_scan_consistency.hxx +11 -10
  994. package/deps/couchbase-cxx-client/couchbase/search_sort.hxx +20 -20
  995. package/deps/couchbase-cxx-client/couchbase/search_sort_field.hxx +77 -71
  996. package/deps/couchbase-cxx-client/couchbase/search_sort_field_missing.hxx +2 -2
  997. package/deps/couchbase-cxx-client/couchbase/search_sort_field_mode.hxx +3 -3
  998. package/deps/couchbase-cxx-client/couchbase/search_sort_field_type.hxx +4 -4
  999. package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +41 -41
  1000. package/deps/couchbase-cxx-client/couchbase/search_sort_id.hxx +23 -23
  1001. package/deps/couchbase-cxx-client/couchbase/search_sort_score.hxx +23 -23
  1002. package/deps/couchbase-cxx-client/couchbase/search_term_range.hxx +17 -17
  1003. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +50 -50
  1004. package/deps/couchbase-cxx-client/couchbase/service_type.hxx +34 -34
  1005. package/deps/couchbase-cxx-client/couchbase/store_semantics.hxx +28 -28
  1006. package/deps/couchbase-cxx-client/couchbase/subdoc/array_add_unique.hxx +54 -54
  1007. package/deps/couchbase-cxx-client/couchbase/subdoc/array_append.hxx +40 -40
  1008. package/deps/couchbase-cxx-client/couchbase/subdoc/array_insert.hxx +41 -41
  1009. package/deps/couchbase-cxx-client/couchbase/subdoc/array_prepend.hxx +41 -41
  1010. package/deps/couchbase-cxx-client/couchbase/subdoc/count.hxx +24 -24
  1011. package/deps/couchbase-cxx-client/couchbase/subdoc/counter.hxx +41 -41
  1012. package/deps/couchbase-cxx-client/couchbase/subdoc/exists.hxx +24 -24
  1013. package/deps/couchbase-cxx-client/couchbase/subdoc/get.hxx +45 -29
  1014. package/deps/couchbase-cxx-client/couchbase/subdoc/insert.hxx +70 -54
  1015. package/deps/couchbase-cxx-client/couchbase/subdoc/lookup_in_macro.hxx +13 -12
  1016. package/deps/couchbase-cxx-client/couchbase/subdoc/mutate_in_macro.hxx +7 -2
  1017. package/deps/couchbase-cxx-client/couchbase/subdoc/remove.hxx +24 -24
  1018. package/deps/couchbase-cxx-client/couchbase/subdoc/replace.hxx +55 -39
  1019. package/deps/couchbase-cxx-client/couchbase/subdoc/upsert.hxx +70 -54
  1020. package/deps/couchbase-cxx-client/couchbase/term_facet.hxx +16 -16
  1021. package/deps/couchbase-cxx-client/couchbase/term_facet_result.hxx +14 -14
  1022. package/deps/couchbase-cxx-client/couchbase/term_query.hxx +107 -104
  1023. package/deps/couchbase-cxx-client/couchbase/term_range_query.hxx +99 -96
  1024. package/deps/couchbase-cxx-client/couchbase/timeout_options.hxx +118 -112
  1025. package/deps/couchbase-cxx-client/couchbase/tls_verify_mode.hxx +2 -2
  1026. package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +25 -24
  1027. package/deps/couchbase-cxx-client/couchbase/tracing/otel_tracer.hxx +45 -44
  1028. package/deps/couchbase-cxx-client/couchbase/tracing/request_span.hxx +34 -34
  1029. package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +27 -25
  1030. package/deps/couchbase-cxx-client/couchbase/tracing_options.hxx +147 -142
  1031. package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +149 -115
  1032. package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +146 -95
  1033. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_result.hxx +52 -80
  1034. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +33 -29
  1035. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +101 -96
  1036. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +228 -223
  1037. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_result.hxx +11 -12
  1038. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_result.hxx +2 -3
  1039. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +105 -104
  1040. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +191 -187
  1041. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_query_config.hxx +32 -32
  1042. package/deps/couchbase-cxx-client/couchbase/transactions.hxx +56 -37
  1043. package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +11 -10
  1044. package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +25 -24
  1045. package/deps/couchbase-cxx-client/couchbase/update_bucket_options.hxx +9 -9
  1046. package/deps/couchbase-cxx-client/couchbase/update_collection_options.hxx +35 -34
  1047. package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +85 -80
  1048. package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +9 -9
  1049. package/deps/couchbase-cxx-client/couchbase/vector_query.hxx +82 -62
  1050. package/deps/couchbase-cxx-client/couchbase/vector_search.hxx +51 -47
  1051. package/deps/couchbase-cxx-client/couchbase/vector_search_options.hxx +45 -41
  1052. package/deps/couchbase-cxx-client/couchbase/wan_development_configuration_profile.hxx +13 -13
  1053. package/deps/couchbase-cxx-client/couchbase/watch_query_indexes_options.hxx +41 -41
  1054. package/deps/couchbase-cxx-client/couchbase/wildcard_query.hxx +42 -41
  1055. package/deps/couchbase-cxx-client/third_party/expected/include/tl/expected.hpp +1746 -1584
  1056. package/deps/couchbase-cxx-client/third_party/jsonsl/jsonsl.c +2664 -2638
  1057. package/deps/couchbase-cxx-client/third_party/jsonsl/jsonsl.h +359 -342
  1058. package/dist/binding.d.ts +39 -4
  1059. package/dist/binding.js +4 -1
  1060. package/dist/collection.js +0 -1
  1061. package/dist/diagnosticstypes.js +2 -2
  1062. package/dist/searchtypes.d.ts +0 -4
  1063. package/dist/searchtypes.js +0 -4
  1064. package/dist/transactions.d.ts +1 -0
  1065. package/dist/transactions.js +12 -2
  1066. package/dist/vectorsearch.d.ts +4 -19
  1067. package/dist/vectorsearch.js +24 -19
  1068. package/package.json +29 -28
  1069. package/src/constants.cpp +111 -75
  1070. package/src/jstocbpp_autogen.hpp +146 -15
  1071. package/src/jstocbpp_basic.hpp +23 -0
  1072. package/src/jstocbpp_errors.hpp +9 -9
  1073. package/src/jstocbpp_transactions.hpp +17 -12
  1074. package/src/transaction.cpp +10 -5
  1075. package/tools/gen-bindings-js.js +1 -0
  1076. package/tools/gen-bindings-json.py +5 -2
  1077. package/deps/couchbase-cxx-cache/asio/41f31469d0dd420500b334dc8c2fd3ffe7320d8e/asio/asio/COPYING +0 -4
  1078. package/deps/couchbase-cxx-cache/asio/41f31469d0dd420500b334dc8c2fd3ffe7320d8e/asio/asio/README +0 -4
  1079. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/crypto/obj/README +0 -15
  1080. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/crypto/perlasm/readme +0 -100
  1081. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/nist-pkits/README.chromium +0 -19
  1082. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/ssl/certificates/README +0 -318
  1083. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/verify_certificate_chain_unittest/README +0 -87
  1084. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/verify_signed_data_unittest/README +0 -35
  1085. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/third_party/fiat/README.chromium +0 -11
  1086. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/util/bot/README +0 -3
  1087. package/deps/couchbase-cxx-cache/fmt/d3c862243fcf1c41b4c09903f35479bd42f135b7/fmt/support/README +0 -4
  1088. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.cxx +0 -113
  1089. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.hxx +0 -60
  1090. package/deps/couchbase-cxx-client/core/impl/manager_error_context.cxx +0 -100
  1091. package/deps/couchbase-cxx-client/core/impl/search_error_context.cxx +0 -147
  1092. package/deps/couchbase-cxx-client/couchbase/analytics_error_context.hxx +0 -143
  1093. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +0 -100
  1094. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +0 -269
  1095. package/deps/couchbase-cxx-client/couchbase/key_value_error_context.hxx +0 -229
  1096. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +0 -136
  1097. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_info.hxx +0 -138
  1098. package/deps/couchbase-cxx-client/couchbase/key_value_extended_error_info.hxx +0 -86
  1099. package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +0 -109
  1100. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -111
  1101. package/deps/couchbase-cxx-client/couchbase/query_error_context.hxx +0 -145
  1102. package/deps/couchbase-cxx-client/couchbase/search_error_context.hxx +0 -138
  1103. package/deps/couchbase-cxx-client/couchbase/subdocument_error_context.hxx +0 -147
  1104. package/deps/couchbase-cxx-client/couchbase/transaction_op_error_context.hxx +0 -76
@@ -22,12 +22,16 @@
22
22
  #include "core/operations/document_decrement.hxx"
23
23
  #include "core/operations/document_exists.hxx"
24
24
  #include "core/operations/document_get.hxx"
25
+ #include "core/operations/document_get_all_replicas.hxx"
25
26
  #include "core/operations/document_get_and_lock.hxx"
26
27
  #include "core/operations/document_get_and_touch.hxx"
28
+ #include "core/operations/document_get_any_replica.hxx"
27
29
  #include "core/operations/document_get_projected.hxx"
28
30
  #include "core/operations/document_increment.hxx"
29
31
  #include "core/operations/document_insert.hxx"
30
32
  #include "core/operations/document_lookup_in.hxx"
33
+ #include "core/operations/document_lookup_in_all_replicas.hxx"
34
+ #include "core/operations/document_lookup_in_any_replica.hxx"
31
35
  #include "core/operations/document_mutate_in.hxx"
32
36
  #include "core/operations/document_prepend.hxx"
33
37
  #include "core/operations/document_remove.hxx"
@@ -37,6 +41,7 @@
37
41
  #include "core/operations/document_upsert.hxx"
38
42
  #include "core/range_scan_options.hxx"
39
43
  #include "core/range_scan_orchestrator.hxx"
44
+ #include "error.hxx"
40
45
  #include "get_all_replicas.hxx"
41
46
  #include "get_any_replica.hxx"
42
47
  #include "get_replica.hxx"
@@ -54,1059 +59,827 @@ namespace couchbase
54
59
  {
55
60
  class collection_impl : public std::enable_shared_from_this<collection_impl>
56
61
  {
57
- public:
58
- collection_impl(core::cluster core, std::string_view bucket_name, std::string_view scope_name, std::string_view name)
59
- : core_{ std::move(core) }
60
- , bucket_name_{ bucket_name }
61
- , scope_name_{ scope_name }
62
- , name_{ name }
63
- {
62
+ public:
63
+ collection_impl(core::cluster core,
64
+ std::string_view bucket_name,
65
+ std::string_view scope_name,
66
+ std::string_view name)
67
+ : core_{ std::move(core) }
68
+ , bucket_name_{ bucket_name }
69
+ , scope_name_{ scope_name }
70
+ , name_{ name }
71
+ {
72
+ }
73
+
74
+ [[nodiscard]] auto bucket_name() const -> const std::string&
75
+ {
76
+ return bucket_name_;
77
+ }
78
+
79
+ [[nodiscard]] auto scope_name() const -> const std::string&
80
+ {
81
+ return scope_name_;
82
+ }
83
+
84
+ [[nodiscard]] auto name() const -> const std::string&
85
+ {
86
+ return name_;
87
+ }
88
+
89
+ [[nodiscard]] auto core() const -> const core::cluster&
90
+ {
91
+ return core_;
92
+ }
93
+
94
+ void get(std::string document_key, get_options::built options, get_handler&& handler) const
95
+ {
96
+ if (!options.with_expiry && options.projections.empty()) {
97
+ return core_.execute(
98
+ core::operations::get_request{
99
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
100
+ {},
101
+ {},
102
+ options.timeout,
103
+ { options.retry_strategy },
104
+ },
105
+ [handler = std::move(handler)](auto resp) mutable {
106
+ return handler(core::impl::make_error(std::move(resp.ctx)),
107
+ get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
108
+ });
64
109
  }
65
-
66
- [[nodiscard]] auto bucket_name() const -> const std::string&
67
- {
68
- return bucket_name_;
69
- }
70
-
71
- [[nodiscard]] auto scope_name() const -> const std::string&
72
- {
73
- return scope_name_;
74
- }
75
-
76
- [[nodiscard]] auto name() const -> const std::string&
77
- {
78
- return name_;
79
- }
80
-
81
- [[nodiscard]] auto core() const -> const core::cluster&
82
- {
83
- return core_;
84
- }
85
-
86
- void get(std::string document_key, get_options::built options, get_handler&& handler) const
87
- {
88
- if (!options.with_expiry && options.projections.empty()) {
89
- return core_.execute(
90
- core::operations::get_request{
91
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
92
- {},
93
- {},
94
- options.timeout,
95
- { options.retry_strategy },
96
- },
97
- [handler = std::move(handler)](auto resp) mutable {
98
- return handler(std::move(resp.ctx), get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
99
- });
110
+ return core_.execute(
111
+ core::operations::get_projected_request{
112
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
113
+ {},
114
+ {},
115
+ options.projections,
116
+ options.with_expiry,
117
+ {},
118
+ false,
119
+ options.timeout,
120
+ { options.retry_strategy },
121
+ },
122
+ [handler = std::move(handler)](auto resp) mutable {
123
+ std::optional<std::chrono::system_clock::time_point> expiry_time{};
124
+ if (resp.expiry && resp.expiry.value() > 0) {
125
+ expiry_time.emplace(std::chrono::seconds{ resp.expiry.value() });
100
126
  }
101
- return core_.execute(
102
- core::operations::get_projected_request{
103
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
104
- {},
105
- {},
106
- options.projections,
107
- options.with_expiry,
108
- {},
109
- false,
110
- options.timeout,
111
- { options.retry_strategy },
112
- },
113
- [handler = std::move(handler)](auto resp) mutable {
114
- std::optional<std::chrono::system_clock::time_point> expiry_time{};
115
- if (resp.expiry && resp.expiry.value() > 0) {
116
- expiry_time.emplace(std::chrono::seconds{ resp.expiry.value() });
117
- }
118
- return handler(std::move(resp.ctx), get_result{ resp.cas, { std::move(resp.value), resp.flags }, expiry_time });
119
- });
120
- }
121
-
122
- void get_and_touch(std::string document_key,
123
- std::uint32_t expiry,
124
- get_and_touch_options::built options,
125
- get_and_touch_handler&& handler) const
126
- {
127
- return core_.execute(
128
- core::operations::get_and_touch_request{
129
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
130
- {},
131
- {},
132
- expiry,
133
- options.timeout,
134
- { options.retry_strategy },
135
- },
136
- [handler = std::move(handler)](auto resp) mutable {
137
- return handler(std::move(resp.ctx), get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
138
- });
139
- }
140
-
141
- void touch(std::string document_key, std::uint32_t expiry, touch_options::built options, touch_handler&& handler) const
142
- {
143
- return core_.execute(
144
- core::operations::touch_request{
145
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
146
- {},
147
- {},
148
- expiry,
149
- options.timeout,
150
- { options.retry_strategy },
151
- },
152
- [handler = std::move(handler)](auto resp) mutable { return handler(std::move(resp.ctx), result{ resp.cas }); });
153
- }
154
-
155
- void get_any_replica(std::string document_key,
156
- const get_any_replica_options::built& options,
157
- core::impl::movable_get_any_replica_handler&& handler) const
158
- {
159
- auto request =
160
- std::make_shared<core::impl::get_any_replica_request>(bucket_name_, scope_name_, name_, std::move(document_key), options.timeout);
161
- core_.with_bucket_configuration(
162
- bucket_name_,
163
- [core = core_, r = std::move(request), h = std::move(handler)](std::error_code ec,
164
- const core::topology::configuration& config) mutable {
165
- if (ec) {
166
- return h(make_key_value_error_context(ec, r->id()), get_replica_result{});
167
- }
168
- struct replica_context {
169
- replica_context(core::impl::movable_get_any_replica_handler&& handler, std::uint32_t expected_responses)
170
- : handler_(std::move(handler))
171
- , expected_responses_(expected_responses)
172
- {
173
- }
174
-
175
- core::impl::movable_get_any_replica_handler handler_;
176
- std::uint32_t expected_responses_;
177
- bool done_{ false };
178
- std::mutex mutex_{};
179
- };
180
- auto ctx = std::make_shared<replica_context>(std::move(h), config.num_replicas.value_or(0U) + 1U);
181
-
182
- for (std::size_t idx = 1U; idx <= config.num_replicas.value_or(0U); ++idx) {
183
- core::document_id replica_id{ r->id() };
184
- replica_id.node_index(idx);
185
- core.execute(core::impl::get_replica_request{ std::move(replica_id), r->timeout() }, [ctx](auto&& resp) {
186
- core::impl::movable_get_any_replica_handler local_handler;
187
- {
188
- const std::scoped_lock lock(ctx->mutex_);
189
- if (ctx->done_) {
190
- return;
191
- }
192
- --ctx->expected_responses_;
193
- if (resp.ctx.ec()) {
194
- if (ctx->expected_responses_ > 0) {
195
- // just ignore the response
196
- return;
197
- }
198
- // consider document irretrievable and give up
199
- resp.ctx.override_ec(errc::key_value::document_irretrievable);
200
- }
201
- ctx->done_ = true;
202
- std::swap(local_handler, ctx->handler_);
203
- }
204
- if (local_handler) {
205
- return local_handler(std::move(resp.ctx),
206
- get_replica_result{ resp.cas, true /* replica */, { std::move(resp.value), resp.flags } });
207
- }
208
- });
209
- }
210
-
211
- core::operations::get_request active{ core::document_id{ r->id() } };
212
- active.timeout = r->timeout();
213
- core.execute(active, [ctx](auto resp) {
214
- core::impl::movable_get_any_replica_handler local_handler{};
215
- {
216
- const std::scoped_lock lock(ctx->mutex_);
217
- if (ctx->done_) {
218
- return;
219
- }
220
- --ctx->expected_responses_;
221
- if (resp.ctx.ec()) {
222
- if (ctx->expected_responses_ > 0) {
223
- // just ignore the response
224
- return;
225
- }
226
- // consider document irretrievable and give up
227
- resp.ctx.override_ec(errc::key_value::document_irretrievable);
228
- }
229
- ctx->done_ = true;
230
- std::swap(local_handler, ctx->handler_);
231
- }
232
- if (local_handler) {
233
- return local_handler(std::move(resp.ctx),
234
- get_replica_result{ resp.cas, false /* active */, { std::move(resp.value), resp.flags } });
235
- }
236
- });
127
+ return handler(core::impl::make_error(std::move(resp.ctx)),
128
+ get_result{ resp.cas, { std::move(resp.value), resp.flags }, expiry_time });
129
+ });
130
+ }
131
+
132
+ void get_and_touch(std::string document_key,
133
+ std::uint32_t expiry,
134
+ get_and_touch_options::built options,
135
+ get_and_touch_handler&& handler) const
136
+ {
137
+ return core_.execute(
138
+ core::operations::get_and_touch_request{
139
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
140
+ {},
141
+ {},
142
+ expiry,
143
+ options.timeout,
144
+ { options.retry_strategy },
145
+ },
146
+ [handler = std::move(handler)](auto resp) mutable {
147
+ return handler(core::impl::make_error(std::move(resp.ctx)),
148
+ get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
149
+ });
150
+ }
151
+
152
+ void touch(std::string document_key,
153
+ std::uint32_t expiry,
154
+ touch_options::built options,
155
+ touch_handler&& handler) const
156
+ {
157
+ return core_.execute(
158
+ core::operations::touch_request{
159
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
160
+ {},
161
+ {},
162
+ expiry,
163
+ options.timeout,
164
+ { options.retry_strategy },
165
+ },
166
+ [handler = std::move(handler)](auto resp) mutable {
167
+ return handler(core::impl::make_error(std::move(resp.ctx)), result{ resp.cas });
168
+ });
169
+ }
170
+
171
+ void get_any_replica(std::string document_key,
172
+ const get_any_replica_options::built& options,
173
+ core::impl::movable_get_any_replica_handler&& handler) const
174
+ {
175
+ return core_.execute(
176
+ core::operations::get_any_replica_request{
177
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
178
+ options.timeout,
179
+ options.read_preference,
180
+ },
181
+ [handler = std::move(handler)](auto resp) mutable {
182
+ return handler(core::impl::make_error(std::move(resp.ctx)),
183
+ get_replica_result{
184
+ resp.cas,
185
+ resp.replica,
186
+ { std::move(resp.value), resp.flags },
187
+ });
188
+ });
189
+ }
190
+
191
+ void get_all_replicas(std::string document_key,
192
+ const get_all_replicas_options::built& options,
193
+ core::impl::movable_get_all_replicas_handler&& handler) const
194
+ {
195
+ return core_.execute(
196
+ core::operations::get_all_replicas_request{
197
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
198
+ options.timeout,
199
+ options.read_preference,
200
+ },
201
+ [handler = std::move(handler)](auto resp) mutable {
202
+ get_all_replicas_result result{};
203
+ for (auto& entry : resp.entries) {
204
+ result.emplace_back(get_replica_result{
205
+ entry.cas,
206
+ entry.replica,
207
+ { std::move(entry.value), entry.flags },
237
208
  });
209
+ }
210
+ return handler(core::impl::make_error(std::move(resp.ctx)), std::move(result));
211
+ });
212
+ }
213
+
214
+ void remove(std::string document_key,
215
+ remove_options::built options,
216
+ remove_handler&& handler) const
217
+ {
218
+ auto id = core::document_id{
219
+ bucket_name_,
220
+ scope_name_,
221
+ name_,
222
+ std::move(document_key),
223
+ };
224
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
225
+ return core_.execute(
226
+ core::operations::remove_request{
227
+ std::move(id),
228
+ {},
229
+ {},
230
+ options.cas,
231
+ options.durability_level,
232
+ options.timeout,
233
+ { options.retry_strategy },
234
+ },
235
+ [handler = std::move(handler)](auto resp) mutable {
236
+ if (resp.ctx.ec()) {
237
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
238
+ }
239
+ return handler(core::impl::make_error(std::move(resp.ctx)),
240
+ mutation_result{ resp.cas, std::move(resp.token) });
241
+ });
238
242
  }
239
243
 
240
- void get_all_replicas(std::string document_key,
241
- const get_all_replicas_options::built& options,
242
- core::impl::movable_get_all_replicas_handler&& handler) const
243
- {
244
- auto request = std::make_shared<core::impl::get_all_replicas_request>(
245
- bucket_name_, scope_name_, name_, std::move(document_key), options.timeout);
246
- core_.with_bucket_configuration(
244
+ core::operations::remove_request request{
245
+ id, {}, {}, options.cas, durability_level::none, options.timeout, { options.retry_strategy },
246
+ };
247
+ return core_.execute(std::move(request),
248
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](
249
+ auto&& resp) mutable {
250
+ if (resp.ctx.ec()) {
251
+ return handler(core::impl::make_error(std::move(resp.ctx)),
252
+ mutation_result{ resp.cas, std::move(resp.token) });
253
+ }
254
+ auto token = resp.token;
255
+ core::impl::initiate_observe_poll(
256
+ core,
257
+ std::move(id),
258
+ token,
259
+ options.timeout,
260
+ options.persist_to,
261
+ options.replicate_to,
262
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
263
+ if (ec) {
264
+ resp.ctx.override_ec(ec);
265
+ return handler(core::impl::make_error(std::move(resp.ctx)),
266
+ mutation_result{});
267
+ }
268
+ return handler(core::impl::make_error(std::move(resp.ctx)),
269
+ mutation_result{ resp.cas, std::move(resp.token) });
270
+ });
271
+ });
272
+ }
273
+
274
+ void get_and_lock(std::string document_key,
275
+ std::chrono::seconds lock_duration,
276
+ get_and_lock_options::built options,
277
+ get_and_lock_handler&& handler) const
278
+ {
279
+ core_.execute(
280
+ core::operations::get_and_lock_request{
281
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
282
+ {},
283
+ {},
284
+ static_cast<uint32_t>(lock_duration.count()),
285
+ options.timeout,
286
+ { options.retry_strategy },
287
+ },
288
+ [handler = std::move(handler)](auto&& resp) mutable {
289
+ return handler(core::impl::make_error(std::move(resp.ctx)),
290
+ get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
291
+ });
292
+ }
293
+
294
+ void unlock(std::string document_key,
295
+ couchbase::cas cas,
296
+ unlock_options::built options,
297
+ unlock_handler&& handler) const
298
+ {
299
+ core_.execute(
300
+ core::operations::unlock_request{
301
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
302
+ {},
303
+ {},
304
+ cas,
305
+ options.timeout,
306
+ { options.retry_strategy },
307
+ },
308
+ [handler = std::move(handler)](auto&& resp) mutable {
309
+ return handler(core::impl::make_error(std::move(resp.ctx)));
310
+ });
311
+ }
312
+
313
+ void exists(std::string document_key,
314
+ exists_options::built options,
315
+ exists_handler&& handler) const
316
+ {
317
+ core_.execute(
318
+ core::operations::exists_request{
319
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
320
+ {},
321
+ {},
322
+ options.timeout,
323
+ { options.retry_strategy },
324
+ },
325
+ [handler = std::move(handler)](auto&& resp) mutable {
326
+ return handler(core::impl::make_error(std::move(resp.ctx)),
327
+ exists_result{ resp.cas, resp.exists() });
328
+ });
329
+ }
330
+
331
+ void lookup_in(std::string document_key,
332
+ const std::vector<core::impl::subdoc::command>& specs,
333
+ lookup_in_options::built options,
334
+ lookup_in_handler&& handler) const
335
+ {
336
+ return core_.execute(
337
+ core::operations::lookup_in_request{
338
+ core::document_id{
247
339
  bucket_name_,
248
- [core = core_, r = std::move(request), h = std::move(handler)](std::error_code ec,
249
- const core::topology::configuration& config) mutable {
250
- if (ec) {
251
- return h(make_key_value_error_context(ec, r->id()), get_all_replicas_result{});
252
- }
253
- struct replica_context {
254
- replica_context(core::impl::movable_get_all_replicas_handler handler, std::uint32_t expected_responses)
255
- : handler_(std::move(handler))
256
- , expected_responses_(expected_responses)
257
- {
258
- }
259
-
260
- core::impl::movable_get_all_replicas_handler handler_;
261
- std::uint32_t expected_responses_;
262
- bool done_{ false };
263
- std::mutex mutex_{};
264
- get_all_replicas_result result_{};
265
- };
266
- auto ctx = std::make_shared<replica_context>(std::move(h), config.num_replicas.value_or(0U) + 1U);
267
-
268
- for (std::size_t idx = 1U; idx <= config.num_replicas.value_or(0U); ++idx) {
269
- core::document_id replica_id{ r->id() };
270
- replica_id.node_index(idx);
271
- core.execute(core::impl::get_replica_request{ std::move(replica_id), r->timeout() }, [ctx](auto resp) {
272
- core::impl::movable_get_all_replicas_handler local_handler{};
273
- {
274
- const std::scoped_lock lock(ctx->mutex_);
275
- if (ctx->done_) {
276
- return;
277
- }
278
- --ctx->expected_responses_;
279
- if (resp.ctx.ec()) {
280
- if (ctx->expected_responses_ > 0) {
281
- // just ignore the response
282
- return;
283
- }
284
- } else {
285
- ctx->result_.emplace_back(
286
- get_replica_result{ resp.cas, true /* replica */, { std::move(resp.value), resp.flags } });
287
- }
288
- if (ctx->expected_responses_ == 0) {
289
- ctx->done_ = true;
290
- std::swap(local_handler, ctx->handler_);
291
- }
292
- }
293
- if (local_handler) {
294
- if (!ctx->result_.empty()) {
295
- resp.ctx.override_ec({});
296
- }
297
- return local_handler(std::move(resp.ctx), std::move(ctx->result_));
298
- }
299
- });
300
- }
301
-
302
- core::operations::get_request active{ core::document_id{ r->id() } };
303
- active.timeout = r->timeout();
304
- core.execute(active, [ctx](auto resp) {
305
- core::impl::movable_get_all_replicas_handler local_handler{};
306
- {
307
- const std::scoped_lock lock(ctx->mutex_);
308
- if (ctx->done_) {
309
- return;
310
- }
311
- --ctx->expected_responses_;
312
- if (resp.ctx.ec()) {
313
- if (ctx->expected_responses_ > 0) {
314
- // just ignore the response
315
- return;
316
- }
317
- } else {
318
- ctx->result_.emplace_back(
319
- get_replica_result{ resp.cas, false /* active */, { std::move(resp.value), resp.flags } });
320
- }
321
- if (ctx->expected_responses_ == 0) {
322
- ctx->done_ = true;
323
- std::swap(local_handler, ctx->handler_);
324
- }
325
- }
326
- if (local_handler) {
327
- if (!ctx->result_.empty()) {
328
- resp.ctx.override_ec({});
329
- }
330
- return local_handler(std::move(resp.ctx), std::move(ctx->result_));
331
- }
332
- });
333
- });
334
- }
335
-
336
- void remove(std::string document_key, remove_options::built options, remove_handler&& handler) const
337
- {
338
- auto id = core::document_id{
339
- bucket_name_,
340
- scope_name_,
341
- name_,
342
- std::move(document_key),
343
- };
344
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
345
- return core_.execute(
346
- core::operations::remove_request{
347
- std::move(id),
348
- {},
349
- {},
350
- options.cas,
351
- options.durability_level,
352
- options.timeout,
353
- { options.retry_strategy },
354
- },
355
- [handler = std::move(handler)](auto resp) mutable {
356
- if (resp.ctx.ec()) {
357
- return handler(std::move(resp.ctx), mutation_result{});
358
- }
359
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
360
- });
340
+ scope_name_,
341
+ name_,
342
+ std::move(document_key),
343
+ },
344
+ {},
345
+ {},
346
+ options.access_deleted,
347
+ specs,
348
+ options.timeout,
349
+ { options.retry_strategy },
350
+ },
351
+ [handler = std::move(handler)](auto resp) mutable {
352
+ if (resp.ctx.ec()) {
353
+ return handler(core::impl::make_error(std::move(resp.ctx)), lookup_in_result{});
361
354
  }
362
355
 
363
- core::operations::remove_request request{
364
- id, {}, {}, options.cas, durability_level::none, options.timeout, { options.retry_strategy },
365
- };
366
- return core_.execute(
367
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto&& resp) mutable {
368
- if (resp.ctx.ec()) {
369
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
370
- }
371
- auto token = resp.token;
372
- core::impl::initiate_observe_poll(core,
373
- std::move(id),
374
- token,
375
- options.timeout,
376
- options.persist_to,
377
- options.replicate_to,
378
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
379
- if (ec) {
380
- resp.ctx.override_ec(ec);
381
- return handler(std::move(resp.ctx), mutation_result{});
382
- }
383
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
384
- });
385
- });
386
- }
387
-
388
- void get_and_lock(std::string document_key,
389
- std::chrono::seconds lock_duration,
390
- get_and_lock_options::built options,
391
- get_and_lock_handler&& handler) const
392
- {
393
- core_.execute(
394
- core::operations::get_and_lock_request{
395
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
396
- {},
397
- {},
398
- static_cast<uint32_t>(lock_duration.count()),
399
- options.timeout,
400
- { options.retry_strategy },
401
- },
402
- [handler = std::move(handler)](auto&& resp) mutable {
403
- return handler(std::move(resp.ctx), get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
356
+ std::vector<lookup_in_result::entry> entries{};
357
+ entries.reserve(resp.fields.size());
358
+ for (auto& entry : resp.fields) {
359
+ entries.emplace_back(lookup_in_result::entry{
360
+ std::move(entry.path),
361
+ std::move(entry.value),
362
+ entry.original_index,
363
+ entry.exists,
364
+ entry.ec,
404
365
  });
405
- }
406
-
407
- void unlock(std::string document_key, couchbase::cas cas, unlock_options::built options, unlock_handler&& handler) const
408
- {
409
- core_.execute(
410
- core::operations::unlock_request{
411
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
412
- {},
413
- {},
414
- cas,
415
- options.timeout,
416
- { options.retry_strategy },
417
- },
418
- [handler = std::move(handler)](auto&& resp) mutable { return handler(std::move(resp.ctx)); });
419
- }
420
-
421
- void exists(std::string document_key, exists_options::built options, exists_handler&& handler) const
422
- {
423
- core_.execute(
424
- core::operations::exists_request{
425
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
426
- {},
427
- {},
428
- options.timeout,
429
- { options.retry_strategy },
430
- },
431
- [handler = std::move(handler)](auto&& resp) mutable {
432
- return handler(std::move(resp.ctx), exists_result{ resp.cas, resp.exists() });
366
+ }
367
+ return handler(core::impl::make_error(std::move(resp.ctx)),
368
+ lookup_in_result{ resp.cas, std::move(entries), resp.deleted });
369
+ });
370
+ }
371
+
372
+ void lookup_in_all_replicas(std::string document_key,
373
+ const std::vector<core::impl::subdoc::command>& specs,
374
+ const lookup_in_all_replicas_options::built& options,
375
+ lookup_in_all_replicas_handler&& handler) const
376
+ {
377
+ return core_.execute(
378
+ core::operations::lookup_in_all_replicas_request{
379
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
380
+ specs,
381
+ options.timeout,
382
+ {},
383
+ options.read_preference,
384
+ },
385
+ [handler = std::move(handler)](auto resp) mutable {
386
+ lookup_in_all_replicas_result result{};
387
+ for (auto& res : resp.entries) {
388
+ std::vector<lookup_in_result::entry> entries;
389
+ entries.reserve(res.fields.size());
390
+ for (auto& field : res.fields) {
391
+ entries.emplace_back(lookup_in_result::entry{
392
+ std::move(field.path),
393
+ std::move(field.value),
394
+ field.original_index,
395
+ field.exists,
396
+ field.ec,
397
+ });
398
+ }
399
+ result.emplace_back(lookup_in_replica_result{
400
+ res.cas,
401
+ std::move(entries),
402
+ res.deleted,
403
+ res.is_replica,
433
404
  });
434
- }
435
-
436
- void lookup_in(std::string document_key,
437
- const std::vector<core::impl::subdoc::command>& specs,
438
- lookup_in_options::built options,
439
- lookup_in_handler&& handler) const
440
- {
441
- return core_.execute(
442
- core::operations::lookup_in_request{
443
- core::document_id{
444
- bucket_name_,
445
- scope_name_,
446
- name_,
447
- std::move(document_key),
448
- },
449
- {},
450
- {},
451
- options.access_deleted,
452
- specs,
453
- options.timeout,
454
- { options.retry_strategy },
455
- },
456
- [handler = std::move(handler)](auto resp) mutable {
457
- if (resp.ctx.ec()) {
458
- return handler(std::move(resp.ctx), lookup_in_result{});
459
- }
460
-
461
- std::vector<lookup_in_result::entry> entries{};
462
- entries.reserve(resp.fields.size());
463
- for (auto& entry : resp.fields) {
464
- entries.emplace_back(lookup_in_result::entry{
465
- std::move(entry.path),
466
- std::move(entry.value),
467
- entry.original_index,
468
- entry.exists,
469
- entry.ec,
470
- });
471
- }
472
- return handler(std::move(resp.ctx), lookup_in_result{ resp.cas, std::move(entries), resp.deleted });
405
+ }
406
+ return handler(core::impl::make_error(std::move(resp.ctx)), result);
407
+ });
408
+ }
409
+
410
+ void lookup_in_any_replica(std::string document_key,
411
+ const std::vector<core::impl::subdoc::command>& specs,
412
+ const lookup_in_any_replica_options::built& options,
413
+ lookup_in_any_replica_handler&& handler) const
414
+ {
415
+ return core_.execute(
416
+ core::operations::lookup_in_any_replica_request{
417
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
418
+ specs,
419
+ options.timeout,
420
+ {},
421
+ options.read_preference,
422
+ },
423
+ [handler = std::move(handler)](auto resp) mutable {
424
+ std::vector<lookup_in_result::entry> entries;
425
+ for (auto& field : resp.fields) {
426
+ entries.emplace_back(lookup_in_result::entry{
427
+ std::move(field.path),
428
+ std::move(field.value),
429
+ field.original_index,
430
+ field.exists,
431
+ field.ec,
473
432
  });
433
+ }
434
+ entries.reserve(resp.fields.size());
435
+ return handler(
436
+ core::impl::make_error(std::move(resp.ctx)),
437
+ lookup_in_replica_result{ resp.cas, std::move(entries), resp.deleted, resp.is_replica });
438
+ });
439
+ }
440
+
441
+ void mutate_in(std::string document_key,
442
+ const std::vector<core::impl::subdoc::command>& specs,
443
+ mutate_in_options::built options,
444
+ mutate_in_handler&& handler) const
445
+ {
446
+ auto id = core::document_id{
447
+ bucket_name_,
448
+ scope_name_,
449
+ name_,
450
+ std::move(document_key),
451
+ };
452
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
453
+ return core_.execute(
454
+ core::operations::mutate_in_request{
455
+ std::move(id),
456
+ {},
457
+ {},
458
+ options.cas,
459
+ options.access_deleted,
460
+ options.create_as_deleted,
461
+ options.expiry,
462
+ options.store_semantics,
463
+ specs,
464
+ options.durability_level,
465
+ options.timeout,
466
+ { options.retry_strategy },
467
+ options.preserve_expiry,
468
+ },
469
+ [handler = std::move(handler)](auto resp) mutable {
470
+ if (resp.ctx.ec()) {
471
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutate_in_result{});
472
+ }
473
+ std::vector<mutate_in_result::entry> entries{};
474
+ entries.reserve(resp.fields.size());
475
+ for (auto& entry : resp.fields) {
476
+ entries.emplace_back(mutate_in_result::entry{
477
+ std::move(entry.path),
478
+ std::move(entry.value),
479
+ entry.original_index,
480
+ });
481
+ }
482
+ return handler(
483
+ core::impl::make_error(std::move(resp.ctx)),
484
+ mutate_in_result{ resp.cas, std::move(resp.token), std::move(entries), resp.deleted });
485
+ });
474
486
  }
475
487
 
476
- void lookup_in_all_replicas(std::string document_key,
477
- const std::vector<core::impl::subdoc::command>& specs,
478
- const lookup_in_all_replicas_options::built& options,
479
- lookup_in_all_replicas_handler&& handler) const
480
- {
481
- auto request = std::make_shared<couchbase::core::impl::lookup_in_all_replicas_request>(
482
- bucket_name_, scope_name_, name_, std::move(document_key), specs, options.timeout);
483
- core_.open_bucket(
484
- bucket_name_,
485
- [core = core_, bucket_name = bucket_name_, r = std::move(request), h = std::move(handler)](std::error_code ec) mutable {
486
- if (ec) {
487
- h(core::make_subdocument_error_context(make_key_value_error_context(ec, r->id()), ec, {}, {}, false),
488
- lookup_in_all_replicas_result{});
489
- return;
490
- }
491
-
492
- return core.with_bucket_configuration(
493
- bucket_name,
494
- [core = core, r = std::move(r), h = std::move(h)](std::error_code ec, const core::topology::configuration& config) mutable {
495
- if (!config.capabilities.supports_subdoc_read_replica()) {
496
- ec = errc::common::feature_not_available;
497
- }
498
-
499
- if (ec) {
500
- return h(core::make_subdocument_error_context(make_key_value_error_context(ec, r->id()), ec, {}, {}, false),
501
- lookup_in_all_replicas_result{});
502
- }
503
- struct replica_context {
504
- replica_context(core::impl::movable_lookup_in_all_replicas_handler handler, std::uint32_t expected_responses)
505
- : handler_(std::move(handler))
506
- , expected_responses_(expected_responses)
507
- {
508
- }
509
-
510
- core::impl::movable_lookup_in_all_replicas_handler handler_;
511
- std::uint32_t expected_responses_;
512
- bool done_{ false };
513
- std::mutex mutex_{};
514
- lookup_in_all_replicas_result result_{};
515
- };
516
- auto ctx = std::make_shared<replica_context>(std::move(h), config.num_replicas.value_or(0U) + 1U);
517
-
518
- for (std::size_t idx = 1U; idx <= config.num_replicas.value_or(0U); ++idx) {
519
- core::document_id replica_id{ r->id() };
520
- replica_id.node_index(idx);
521
- core.execute(core::impl::lookup_in_replica_request{ std::move(replica_id), r->specs(), r->timeout() },
522
- [ctx](core::impl::lookup_in_replica_response&& resp) {
523
- core::impl::movable_lookup_in_all_replicas_handler local_handler{};
524
- {
525
- const std::scoped_lock lock(ctx->mutex_);
526
- if (ctx->done_) {
527
- return;
528
- }
529
- --ctx->expected_responses_;
530
- if (resp.ctx.ec()) {
531
- if (ctx->expected_responses_ > 0) {
532
- // just ignore the response
533
- return;
534
- }
535
- } else {
536
- std::vector<lookup_in_replica_result::entry> entries{};
537
- for (const auto& field : resp.fields) {
538
- lookup_in_replica_result::entry lookup_in_entry{};
539
- lookup_in_entry.path = field.path;
540
- lookup_in_entry.value = field.value;
541
- lookup_in_entry.exists = field.exists;
542
- lookup_in_entry.original_index = field.original_index;
543
- lookup_in_entry.ec = field.ec;
544
- entries.emplace_back(lookup_in_entry);
545
- }
546
- ctx->result_.emplace_back(resp.cas, entries, resp.deleted, true /* replica */);
547
- }
548
- if (ctx->expected_responses_ == 0) {
549
- ctx->done_ = true;
550
- std::swap(local_handler, ctx->handler_);
551
- }
552
- }
553
- if (local_handler) {
554
- if (!ctx->result_.empty()) {
555
- resp.ctx.override_ec({});
556
- }
557
- return local_handler(std::move(resp.ctx), std::move(ctx->result_));
558
- }
559
- });
560
- }
561
-
562
- core::operations::lookup_in_request active{ core::document_id{ r->id() } };
563
- active.specs = r->specs();
564
- active.timeout = r->timeout();
565
- core.execute(active, [ctx](core::operations::lookup_in_response&& resp) {
566
- core::impl::movable_lookup_in_all_replicas_handler local_handler{};
567
- {
568
- const std::scoped_lock lock(ctx->mutex_);
569
- if (ctx->done_) {
570
- return;
571
- }
572
- --ctx->expected_responses_;
573
- if (resp.ctx.ec()) {
574
- if (ctx->expected_responses_ > 0) {
575
- // just ignore the response
576
- return;
577
- }
578
- } else {
579
- std::vector<lookup_in_replica_result::entry> entries{};
580
- for (const auto& field : resp.fields) {
581
- lookup_in_replica_result::entry lookup_in_entry{};
582
- lookup_in_entry.path = field.path;
583
- lookup_in_entry.value = field.value;
584
- lookup_in_entry.exists = field.exists;
585
- lookup_in_entry.original_index = field.original_index;
586
- lookup_in_entry.ec = field.ec;
587
- entries.emplace_back(lookup_in_entry);
588
- }
589
- ctx->result_.emplace_back(resp.cas, entries, resp.deleted, false /* active */);
590
- }
591
- if (ctx->expected_responses_ == 0) {
592
- ctx->done_ = true;
593
- std::swap(local_handler, ctx->handler_);
594
- }
595
- }
596
- if (local_handler) {
597
- if (!ctx->result_.empty()) {
598
- resp.ctx.override_ec({});
599
- }
600
- return local_handler(std::move(resp.ctx), std::move(ctx->result_));
601
- }
602
- });
603
- });
604
- });
488
+ core::operations::mutate_in_request request{
489
+ id,
490
+ {},
491
+ {},
492
+ options.cas,
493
+ options.access_deleted,
494
+ options.create_as_deleted,
495
+ options.expiry,
496
+ options.store_semantics,
497
+ specs,
498
+ durability_level::none,
499
+ options.timeout,
500
+ { options.retry_strategy },
501
+ options.preserve_expiry,
605
502
  };
503
+ return core_.execute(
504
+ std::move(request),
505
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](
506
+ auto&& resp) mutable {
507
+ if (resp.ctx.ec()) {
508
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutate_in_result{});
509
+ }
606
510
 
607
- void lookup_in_any_replica(std::string document_key,
608
- const std::vector<core::impl::subdoc::command>& specs,
609
- const lookup_in_any_replica_options::built& options,
610
- lookup_in_any_replica_handler&& handler) const
611
- {
612
- auto request = std::make_shared<couchbase::core::impl::lookup_in_any_replica_request>(
613
- bucket_name_, scope_name_, name_, std::move(document_key), specs, options.timeout);
614
- core_.open_bucket(
615
- bucket_name_,
616
- [core = core_, bucket_name = bucket_name_, r = std::move(request), h = std::move(handler)](std::error_code ec) mutable {
617
- if (ec) {
618
- h(core::make_subdocument_error_context(make_key_value_error_context(ec, r->id()), ec, {}, {}, false),
619
- lookup_in_replica_result{});
620
- return;
621
- }
622
-
623
- return core.with_bucket_configuration(
624
- bucket_name,
625
- [core = core, r = std::move(r), h = std::move(h)](std::error_code ec, const core::topology::configuration& config) mutable {
626
- if (!config.capabilities.supports_subdoc_read_replica()) {
627
- ec = errc::common::feature_not_available;
628
- }
629
- if (ec) {
630
- return h(core::make_subdocument_error_context(make_key_value_error_context(ec, r->id()), ec, {}, {}, false),
631
- lookup_in_replica_result{});
632
- }
633
- struct replica_context {
634
- replica_context(core::impl::movable_lookup_in_any_replica_handler handler, std::uint32_t expected_responses)
635
- : handler_(std::move(handler))
636
- , expected_responses_(expected_responses)
637
- {
638
- }
639
-
640
- core::impl::movable_lookup_in_any_replica_handler handler_;
641
- std::uint32_t expected_responses_;
642
- bool done_{ false };
643
- std::mutex mutex_{};
644
- };
645
- auto ctx = std::make_shared<replica_context>(std::move(h), config.num_replicas.value_or(0U) + 1U);
646
-
647
- for (std::size_t idx = 1U; idx <= config.num_replicas.value_or(0U); ++idx) {
648
- core::document_id replica_id{ r->id() };
649
- replica_id.node_index(idx);
650
- core.execute(core::impl::lookup_in_replica_request{ std::move(replica_id), r->specs(), r->timeout() },
651
- [ctx](core::impl::lookup_in_replica_response&& resp) {
652
- core::impl::movable_lookup_in_any_replica_handler local_handler;
653
- {
654
- const std::scoped_lock lock(ctx->mutex_);
655
- if (ctx->done_) {
656
- return;
657
- }
658
- --ctx->expected_responses_;
659
- if (resp.ctx.ec()) {
660
- if (ctx->expected_responses_ > 0) {
661
- // just ignore the response
662
- return;
663
- }
664
- // consider document irretrievable and give up
665
- resp.ctx.override_ec(errc::key_value::document_irretrievable);
666
- }
667
- ctx->done_ = true;
668
- std::swap(local_handler, ctx->handler_);
669
- }
670
- if (local_handler) {
671
- std::vector<lookup_in_replica_result::entry> entries;
672
- for (const auto& field : resp.fields) {
673
- lookup_in_replica_result::entry entry{};
674
- entry.path = field.path;
675
- entry.original_index = field.original_index;
676
- entry.exists = field.exists;
677
- entry.value = field.value;
678
- entry.ec = field.ec;
679
- entries.emplace_back(entry);
680
- }
681
- return local_handler(
682
- std::move(resp.ctx),
683
- lookup_in_replica_result{ resp.cas, entries, resp.deleted, true /* replica */ });
684
- }
685
- });
686
- }
687
-
688
- core::operations::lookup_in_request active{ core::document_id{ r->id() } };
689
- active.specs = r->specs();
690
- active.timeout = r->timeout();
691
- core.execute(active, [ctx](core::operations::lookup_in_response&& resp) {
692
- core::impl::movable_lookup_in_any_replica_handler local_handler{};
693
- {
694
- const std::scoped_lock lock(ctx->mutex_);
695
- if (ctx->done_) {
696
- return;
697
- }
698
- --ctx->expected_responses_;
699
- if (resp.ctx.ec()) {
700
- if (ctx->expected_responses_ > 0) {
701
- // just ignore the response
702
- return;
703
- }
704
- // consider document irretrievable and give up
705
- resp.ctx.override_ec(errc::key_value::document_irretrievable);
706
- }
707
- ctx->done_ = true;
708
- std::swap(local_handler, ctx->handler_);
709
- }
710
- if (local_handler) {
711
- std::vector<lookup_in_replica_result::entry> entries;
712
- for (const auto& field : resp.fields) {
713
- lookup_in_replica_result::entry entry{};
714
- entry.path = field.path;
715
- entry.original_index = field.original_index;
716
- entry.exists = field.exists;
717
- entry.value = field.value;
718
- entry.ec = field.ec;
719
- entries.emplace_back(entry);
720
- }
721
- return local_handler(std::move(resp.ctx),
722
- lookup_in_replica_result{ resp.cas, entries, resp.deleted, false /* active */ });
723
- }
724
- });
725
- });
511
+ auto token = resp.token;
512
+ core::impl::initiate_observe_poll(
513
+ core,
514
+ std::move(id),
515
+ token,
516
+ options.timeout,
517
+ options.persist_to,
518
+ options.replicate_to,
519
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
520
+ if (ec) {
521
+ resp.ctx.override_ec(ec);
522
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutate_in_result{});
523
+ }
524
+ std::vector<mutate_in_result::entry> entries{};
525
+ entries.reserve(resp.fields.size());
526
+ for (auto& entry : resp.fields) {
527
+ entries.emplace_back(mutate_in_result::entry{
528
+ std::move(entry.path),
529
+ std::move(entry.value),
530
+ entry.original_index,
531
+ });
532
+ }
533
+ return handler(core::impl::make_error(std::move(resp.ctx)),
534
+ mutate_in_result{
535
+ resp.cas, std::move(resp.token), std::move(entries), resp.deleted });
726
536
  });
537
+ });
538
+ }
539
+
540
+ void upsert(std::string document_key,
541
+ codec::encoded_value encoded,
542
+ upsert_options::built options,
543
+ upsert_handler&& handler) const
544
+ {
545
+ auto value = std::move(encoded);
546
+ auto id = core::document_id{
547
+ bucket_name_,
548
+ scope_name_,
549
+ name_,
550
+ std::move(document_key),
727
551
  };
552
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
553
+ return core_.execute(
554
+ core::operations::upsert_request{
555
+ std::move(id),
556
+ std::move(value.data),
557
+ {},
558
+ {},
559
+ value.flags,
560
+ options.expiry,
561
+ options.durability_level,
562
+ options.timeout,
563
+ { options.retry_strategy },
564
+ options.preserve_expiry,
565
+ },
566
+ [handler = std::move(handler)](auto resp) mutable {
567
+ return handler(core::impl::make_error(std::move(resp.ctx)),
568
+ mutation_result{ resp.cas, std::move(resp.token) });
569
+ });
570
+ }
728
571
 
729
- void mutate_in(std::string document_key,
730
- const std::vector<core::impl::subdoc::command>& specs,
731
- mutate_in_options::built options,
732
- mutate_in_handler&& handler) const
733
- {
734
- auto id = core::document_id{
735
- bucket_name_,
736
- scope_name_,
737
- name_,
738
- std::move(document_key),
739
- };
740
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
741
- return core_.execute(
742
- core::operations::mutate_in_request{
743
- std::move(id),
744
- {},
745
- {},
746
- options.cas,
747
- options.access_deleted,
748
- options.create_as_deleted,
749
- options.expiry,
750
- options.store_semantics,
751
- specs,
752
- options.durability_level,
753
- options.timeout,
754
- { options.retry_strategy },
755
- options.preserve_expiry,
756
- },
757
- [handler = std::move(handler)](auto resp) mutable {
758
- if (resp.ctx.ec()) {
759
- return handler(std::move(resp.ctx), mutate_in_result{});
760
- }
761
- std::vector<mutate_in_result::entry> entries{};
762
- entries.reserve(resp.fields.size());
763
- for (auto& entry : resp.fields) {
764
- entries.emplace_back(mutate_in_result::entry{
765
- std::move(entry.path),
766
- std::move(entry.value),
767
- entry.original_index,
768
- });
769
- }
770
- return handler(std::move(resp.ctx),
771
- mutate_in_result{ resp.cas, std::move(resp.token), std::move(entries), resp.deleted });
772
- });
572
+ core::operations::upsert_request request{
573
+ id,
574
+ std::move(value.data),
575
+ {},
576
+ {},
577
+ value.flags,
578
+ options.expiry,
579
+ durability_level::none,
580
+ options.timeout,
581
+ { options.retry_strategy },
582
+ options.preserve_expiry,
583
+ };
584
+ return core_.execute(
585
+ std::move(request),
586
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](auto resp) mutable {
587
+ if (resp.ctx.ec()) {
588
+ return handler(core::impl::make_error(std::move(resp.ctx)),
589
+ mutation_result{ resp.cas, std::move(resp.token) });
773
590
  }
774
591
 
775
- core::operations::mutate_in_request request{
776
- id,
777
- {},
778
- {},
779
- options.cas,
780
- options.access_deleted,
781
- options.create_as_deleted,
782
- options.expiry,
783
- options.store_semantics,
784
- specs,
785
- durability_level::none,
786
- options.timeout,
787
- { options.retry_strategy },
788
- options.preserve_expiry,
789
- };
790
- return core_.execute(
791
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto&& resp) mutable {
792
- if (resp.ctx.ec()) {
793
- return handler(std::move(resp.ctx), mutate_in_result{});
794
- }
795
-
796
- auto token = resp.token;
797
- core::impl::initiate_observe_poll(
798
- core,
799
- std::move(id),
800
- token,
801
- options.timeout,
802
- options.persist_to,
803
- options.replicate_to,
804
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
805
- if (ec) {
806
- resp.ctx.override_ec(ec);
807
- return handler(std::move(resp.ctx), mutate_in_result{});
808
- }
809
- std::vector<mutate_in_result::entry> entries{};
810
- entries.reserve(resp.fields.size());
811
- for (auto& entry : resp.fields) {
812
- entries.emplace_back(mutate_in_result::entry{
813
- std::move(entry.path),
814
- std::move(entry.value),
815
- entry.original_index,
816
- });
817
- }
818
- return handler(std::move(resp.ctx),
819
- mutate_in_result{ resp.cas, std::move(resp.token), std::move(entries), resp.deleted });
820
- });
592
+ auto token = resp.token;
593
+ core::impl::initiate_observe_poll(
594
+ core,
595
+ std::move(id),
596
+ token,
597
+ options.timeout,
598
+ options.persist_to,
599
+ options.replicate_to,
600
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
601
+ if (ec) {
602
+ resp.ctx.override_ec(ec);
603
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
604
+ }
605
+ return handler(core::impl::make_error(std::move(resp.ctx)),
606
+ mutation_result{ resp.cas, std::move(resp.token) });
821
607
  });
608
+ });
609
+ }
610
+
611
+ void insert(std::string document_key,
612
+ codec::encoded_value encoded,
613
+ insert_options::built options,
614
+ insert_handler&& handler) const
615
+ {
616
+ auto value = std::move(encoded);
617
+ auto id = core::document_id{
618
+ bucket_name_,
619
+ scope_name_,
620
+ name_,
621
+ std::move(document_key),
622
+ };
623
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
624
+ return core_.execute(
625
+ core::operations::insert_request{
626
+ std::move(id),
627
+ std::move(value.data),
628
+ {},
629
+ {},
630
+ value.flags,
631
+ options.expiry,
632
+ options.durability_level,
633
+ options.timeout,
634
+ { options.retry_strategy },
635
+ },
636
+ [handler = std::move(handler)](auto&& resp) mutable {
637
+ if (resp.ctx.ec()) {
638
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
639
+ }
640
+ return handler(core::impl::make_error(std::move(resp.ctx)),
641
+ mutation_result{ resp.cas, std::move(resp.token) });
642
+ });
822
643
  }
823
644
 
824
- void upsert(std::string document_key, codec::encoded_value encoded, upsert_options::built options, upsert_handler&& handler) const
825
- {
826
- auto value = std::move(encoded);
827
- auto id = core::document_id{
828
- bucket_name_,
829
- scope_name_,
830
- name_,
831
- std::move(document_key),
832
- };
833
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
834
- return core_.execute(
835
- core::operations::upsert_request{
836
- std::move(id),
837
- std::move(value.data),
838
- {},
839
- {},
840
- value.flags,
841
- options.expiry,
842
- options.durability_level,
843
- options.timeout,
844
- { options.retry_strategy },
845
- options.preserve_expiry,
846
- },
847
- [handler = std::move(handler)](auto resp) mutable {
848
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
849
- });
645
+ core::operations::insert_request request{
646
+ id,
647
+ std::move(value.data),
648
+ {},
649
+ {},
650
+ value.flags,
651
+ options.expiry,
652
+ durability_level::none,
653
+ options.timeout,
654
+ { options.retry_strategy },
655
+ };
656
+ return core_.execute(
657
+ std::move(request),
658
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](auto resp) mutable {
659
+ if (resp.ctx.ec()) {
660
+ return handler(core::impl::make_error(std::move(resp.ctx)),
661
+ mutation_result{ resp.cas, std::move(resp.token) });
850
662
  }
851
663
 
852
- core::operations::upsert_request request{
853
- id,
854
- std::move(value.data),
855
- {},
856
- {},
857
- value.flags,
858
- options.expiry,
859
- durability_level::none,
860
- options.timeout,
861
- { options.retry_strategy },
862
- options.preserve_expiry,
863
- };
864
- return core_.execute(
865
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto resp) mutable {
866
- if (resp.ctx.ec()) {
867
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
868
- }
869
-
870
- auto token = resp.token;
871
- core::impl::initiate_observe_poll(core,
872
- std::move(id),
873
- token,
874
- options.timeout,
875
- options.persist_to,
876
- options.replicate_to,
877
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
878
- if (ec) {
879
- resp.ctx.override_ec(ec);
880
- return handler(std::move(resp.ctx), mutation_result{});
881
- }
882
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
883
- });
664
+ auto token = resp.token;
665
+ core::impl::initiate_observe_poll(
666
+ core,
667
+ std::move(id),
668
+ token,
669
+ options.timeout,
670
+ options.persist_to,
671
+ options.replicate_to,
672
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
673
+ if (ec) {
674
+ resp.ctx.override_ec(ec);
675
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
676
+ }
677
+ return handler(core::impl::make_error(std::move(resp.ctx)),
678
+ mutation_result{ resp.cas, std::move(resp.token) });
884
679
  });
680
+ });
681
+ }
682
+ void replace(std::string document_key,
683
+ codec::encoded_value encoded,
684
+ replace_options::built options,
685
+ replace_handler&& handler) const
686
+ {
687
+ auto value = std::move(encoded);
688
+ auto id = core::document_id{
689
+ bucket_name_,
690
+ scope_name_,
691
+ name_,
692
+ std::move(document_key),
693
+ };
694
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
695
+ return core_.execute(
696
+ core::operations::replace_request{
697
+ std::move(id),
698
+ std::move(value.data),
699
+ {},
700
+ {},
701
+ value.flags,
702
+ options.expiry,
703
+ options.cas,
704
+ options.durability_level,
705
+ options.timeout,
706
+ { options.retry_strategy },
707
+ options.preserve_expiry,
708
+ },
709
+ [handler = std::move(handler)](auto resp) mutable {
710
+ if (resp.ctx.ec()) {
711
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
712
+ }
713
+ return handler(core::impl::make_error(std::move(resp.ctx)),
714
+ mutation_result{ resp.cas, std::move(resp.token) });
715
+ });
885
716
  }
886
717
 
887
- void insert(std::string document_key, codec::encoded_value encoded, insert_options::built options, insert_handler&& handler) const
888
- {
889
- auto value = std::move(encoded);
890
- auto id = core::document_id{
891
- bucket_name_,
892
- scope_name_,
893
- name_,
894
- std::move(document_key),
895
- };
896
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
897
- return core_.execute(
898
- core::operations::insert_request{
899
- std::move(id),
900
- std::move(value.data),
901
- {},
902
- {},
903
- value.flags,
904
- options.expiry,
905
- options.durability_level,
906
- options.timeout,
907
- { options.retry_strategy },
908
- },
909
- [handler = std::move(handler)](auto&& resp) mutable {
910
- if (resp.ctx.ec()) {
911
- return handler(std::move(resp.ctx), mutation_result{});
912
- }
913
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
914
- });
915
- }
718
+ core::operations::replace_request request{
719
+ id,
720
+ std::move(value.data),
721
+ {},
722
+ {},
723
+ value.flags,
724
+ options.expiry,
725
+ options.cas,
726
+ durability_level::none,
727
+ options.timeout,
728
+ { options.retry_strategy },
729
+ options.preserve_expiry,
730
+ };
731
+ return core_.execute(std::move(request),
732
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](
733
+ auto&& resp) mutable {
734
+ if (resp.ctx.ec()) {
735
+ return handler(core::impl::make_error(std::move(resp.ctx)),
736
+ mutation_result{ resp.cas, std::move(resp.token) });
737
+ }
738
+
739
+ auto token = resp.token;
740
+ core::impl::initiate_observe_poll(
741
+ core,
742
+ std::move(id),
743
+ token,
744
+ options.timeout,
745
+ options.persist_to,
746
+ options.replicate_to,
747
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
748
+ if (ec) {
749
+ resp.ctx.override_ec(ec);
750
+ return handler(core::impl::make_error(std::move(resp.ctx)),
751
+ mutation_result{});
752
+ }
753
+ return handler(core::impl::make_error(std::move(resp.ctx)),
754
+ mutation_result{ resp.cas, std::move(resp.token) });
755
+ });
756
+ });
757
+ }
758
+
759
+ void scan(scan_type::built scan_type, scan_options::built options, scan_handler&& handler) const
760
+ {
761
+ core::range_scan_orchestrator_options orchestrator_opts{ options.ids_only };
762
+ if (!options.mutation_state.empty()) {
763
+ orchestrator_opts.consistent_with = core::mutation_state{ options.mutation_state };
764
+ }
765
+ if (options.batch_item_limit.has_value()) {
766
+ orchestrator_opts.batch_item_limit = options.batch_item_limit.value();
767
+ }
768
+ if (options.batch_byte_limit.has_value()) {
769
+ orchestrator_opts.batch_byte_limit = options.batch_byte_limit.value();
770
+ }
771
+ if (options.concurrency.has_value()) {
772
+ orchestrator_opts.concurrency = options.concurrency.value();
773
+ }
774
+ if (options.timeout.has_value()) {
775
+ orchestrator_opts.timeout = options.timeout.value();
776
+ }
916
777
 
917
- core::operations::insert_request request{
918
- id,
919
- std::move(value.data),
920
- {},
921
- {},
922
- value.flags,
923
- options.expiry,
924
- durability_level::none,
925
- options.timeout,
926
- { options.retry_strategy },
778
+ std::variant<std::monostate, core::range_scan, core::prefix_scan, core::sampling_scan>
779
+ core_scan_type{};
780
+ switch (scan_type.type) {
781
+ case scan_type::built::prefix_scan:
782
+ core_scan_type = core::prefix_scan{
783
+ scan_type.prefix,
927
784
  };
928
- return core_.execute(
929
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto resp) mutable {
930
- if (resp.ctx.ec()) {
931
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
932
- }
933
-
934
- auto token = resp.token;
935
- core::impl::initiate_observe_poll(core,
936
- std::move(id),
937
- token,
938
- options.timeout,
939
- options.persist_to,
940
- options.replicate_to,
941
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
942
- if (ec) {
943
- resp.ctx.override_ec(ec);
944
- return handler(std::move(resp.ctx), mutation_result{});
945
- }
946
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
947
- });
948
- });
949
- }
950
- void replace(std::string document_key, codec::encoded_value encoded, replace_options::built options, replace_handler&& handler) const
951
- {
952
- auto value = std::move(encoded);
953
- auto id = core::document_id{
954
- bucket_name_,
955
- scope_name_,
956
- name_,
957
- std::move(document_key),
785
+ break;
786
+ case scan_type::built::range_scan:
787
+ core_scan_type = core::range_scan{
788
+ (scan_type.from)
789
+ ? std::make_optional(core::scan_term{ scan_type.from->term, scan_type.from->exclusive })
790
+ : std::nullopt,
791
+ (scan_type.to)
792
+ ? std::make_optional(core::scan_term{ scan_type.to->term, scan_type.to->exclusive })
793
+ : std::nullopt,
958
794
  };
959
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
960
- return core_.execute(
961
- core::operations::replace_request{
962
- std::move(id),
963
- std::move(value.data),
964
- {},
965
- {},
966
- value.flags,
967
- options.expiry,
968
- options.cas,
969
- options.durability_level,
970
- options.timeout,
971
- { options.retry_strategy },
972
- options.preserve_expiry,
973
- },
974
- [handler = std::move(handler)](auto resp) mutable {
975
- if (resp.ctx.ec()) {
976
- return handler(std::move(resp.ctx), mutation_result{});
977
- }
978
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
979
- });
980
- }
981
-
982
- core::operations::replace_request request{
983
- id,
984
- std::move(value.data),
985
- {},
986
- {},
987
- value.flags,
988
- options.expiry,
989
- options.cas,
990
- durability_level::none,
991
- options.timeout,
992
- { options.retry_strategy },
993
- options.preserve_expiry,
795
+ break;
796
+ case scan_type::built::sampling_scan:
797
+ core_scan_type = core::sampling_scan{
798
+ scan_type.limit,
799
+ scan_type.seed,
994
800
  };
995
- return core_.execute(
996
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto&& resp) mutable {
997
- if (resp.ctx.ec()) {
998
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
999
- }
1000
-
1001
- auto token = resp.token;
1002
- core::impl::initiate_observe_poll(core,
1003
- std::move(id),
1004
- token,
1005
- options.timeout,
1006
- options.persist_to,
1007
- options.replicate_to,
1008
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
1009
- if (ec) {
1010
- resp.ctx.override_ec(ec);
1011
- return handler(std::move(resp.ctx), mutation_result{});
1012
- }
1013
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
1014
- });
1015
- });
801
+ break;
1016
802
  }
1017
803
 
1018
- void scan(scan_type::built scan_type, scan_options::built options, scan_handler&& handler) const
1019
- {
1020
- core::range_scan_orchestrator_options orchestrator_opts{ options.ids_only };
1021
- if (!options.mutation_state.empty()) {
1022
- orchestrator_opts.consistent_with = core::mutation_state{ options.mutation_state };
1023
- }
1024
- if (options.batch_item_limit.has_value()) {
1025
- orchestrator_opts.batch_item_limit = options.batch_item_limit.value();
1026
- }
1027
- if (options.batch_byte_limit.has_value()) {
1028
- orchestrator_opts.batch_byte_limit = options.batch_byte_limit.value();
1029
- }
1030
- if (options.concurrency.has_value()) {
1031
- orchestrator_opts.concurrency = options.concurrency.value();
1032
- }
1033
- if (options.timeout.has_value()) {
1034
- orchestrator_opts.timeout = options.timeout.value();
1035
- }
1036
-
1037
- std::variant<std::monostate, core::range_scan, core::prefix_scan, core::sampling_scan> core_scan_type{};
1038
- switch (scan_type.type) {
1039
- case scan_type::built::prefix_scan:
1040
- core_scan_type = core::prefix_scan{
1041
- scan_type.prefix,
1042
- };
1043
- break;
1044
- case scan_type::built::range_scan:
1045
- core_scan_type = core::range_scan{
1046
- (scan_type.from) ? std::make_optional(core::scan_term{ scan_type.from->term, scan_type.from->exclusive })
1047
- : std::nullopt,
1048
- (scan_type.to) ? std::make_optional(core::scan_term{ scan_type.to->term, scan_type.to->exclusive }) : std::nullopt,
1049
- };
1050
- break;
1051
- case scan_type::built::sampling_scan:
1052
- core_scan_type = core::sampling_scan{
1053
- scan_type.limit,
1054
- scan_type.seed,
1055
- };
1056
- break;
804
+ return core_.open_bucket(
805
+ bucket_name_,
806
+ [this, handler = std::move(handler), orchestrator_opts, core_scan_type](
807
+ std::error_code ec) mutable {
808
+ if (ec) {
809
+ return handler(error(ec), {});
1057
810
  }
1058
-
1059
- return core_.open_bucket(
1060
- bucket_name_, [this, handler = std::move(handler), orchestrator_opts, core_scan_type](std::error_code ec) mutable {
1061
- if (ec) {
1062
- return handler(ec, {});
1063
- }
1064
- return core_.with_bucket_configuration(
1065
- bucket_name_,
1066
- [this, handler = std::move(handler), orchestrator_opts, core_scan_type](
1067
- std::error_code ec, const core::topology::configuration& config) mutable {
1068
- if (ec) {
1069
- return handler(ec, {});
1070
- }
1071
- if (!config.capabilities.supports_range_scan()) {
1072
- return handler(errc::common::feature_not_available, {});
1073
- }
1074
- auto agent_group = core::agent_group(core_.io_context(), core::agent_group_config{ { core_ } });
1075
- ec = agent_group.open_bucket(bucket_name_);
1076
- if (ec) {
1077
- return handler(ec, {});
1078
- }
1079
- auto agent = agent_group.get_agent(bucket_name_);
1080
- if (!agent.has_value()) {
1081
- return handler(agent.error(), {});
1082
- }
1083
- if (!config.vbmap.has_value() || config.vbmap->empty()) {
1084
- CB_LOG_WARNING("Unable to get vbucket map for `{}` - cannot perform scan operation", bucket_name_);
1085
- return handler(errc::common::request_canceled, {});
1086
- }
1087
-
1088
- auto orchestrator = core::range_scan_orchestrator(
1089
- core_.io_context(), agent.value(), config.vbmap.value(), scope_name_, name_, core_scan_type, orchestrator_opts);
1090
- return orchestrator.scan([handler = std::move(handler)](auto ec, auto core_scan_result) mutable {
1091
- if (ec) {
1092
- return handler(ec, {});
1093
- }
1094
- auto internal_result = std::make_shared<internal_scan_result>(std::move(core_scan_result));
1095
- scan_result result{ internal_result };
1096
- return handler({}, result);
1097
- });
1098
- });
811
+ return core_.with_bucket_configuration(
812
+ bucket_name_,
813
+ [this, handler = std::move(handler), orchestrator_opts, core_scan_type](
814
+ std::error_code ec, const core::topology::configuration& config) mutable {
815
+ if (ec) {
816
+ return handler(
817
+ error(ec, "An error occurred when attempting to fetch the bucket configuration."),
818
+ {});
819
+ }
820
+ if (!config.capabilities.supports_range_scan()) {
821
+ return handler(error(errc::common::feature_not_available,
822
+ "This bucket does not support range scan."),
823
+ {});
824
+ }
825
+ auto agent_group =
826
+ core::agent_group(core_.io_context(), core::agent_group_config{ { core_ } });
827
+ ec = agent_group.open_bucket(bucket_name_);
828
+ if (ec) {
829
+ return handler(error(ec,
830
+ fmt::format("An error occurred while opening the `{}` bucket.",
831
+ bucket_name_)),
832
+ {});
833
+ }
834
+ auto agent = agent_group.get_agent(bucket_name_);
835
+ if (!agent.has_value()) {
836
+ return handler(
837
+ error(agent.error(),
838
+ fmt::format(
839
+ "An error occurred while getting an operation agent for the `{}` bucket",
840
+ bucket_name_)),
841
+ {});
842
+ }
843
+ if (!config.vbmap.has_value() || config.vbmap->empty()) {
844
+ CB_LOG_WARNING("Unable to get vbucket map for `{}` - cannot perform scan operation",
845
+ bucket_name_);
846
+ return handler(error(errc::common::request_canceled,
847
+ "No vbucket map included with the bucket config"),
848
+ {});
849
+ }
850
+
851
+ auto orchestrator = core::range_scan_orchestrator(core_.io_context(),
852
+ agent.value(),
853
+ config.vbmap.value(),
854
+ scope_name_,
855
+ name_,
856
+ core_scan_type,
857
+ orchestrator_opts);
858
+ return orchestrator.scan(
859
+ [handler = std::move(handler)](auto ec, auto core_scan_result) mutable {
860
+ if (ec) {
861
+ return handler(error(ec, "Error while starting the range scan"), {});
862
+ }
863
+ auto internal_result =
864
+ std::make_shared<internal_scan_result>(std::move(core_scan_result));
865
+ scan_result result{ internal_result };
866
+ return handler({}, result);
867
+ });
1099
868
  });
1100
- }
1101
-
1102
- private:
1103
- core::cluster core_;
1104
- std::string bucket_name_;
1105
- std::string scope_name_;
1106
- std::string name_;
869
+ });
870
+ }
871
+
872
+ private:
873
+ core::cluster core_;
874
+ std::string bucket_name_;
875
+ std::string scope_name_;
876
+ std::string name_;
1107
877
  };
1108
878
 
1109
- collection::collection(core::cluster core, std::string_view bucket_name, std::string_view scope_name, std::string_view name)
879
+ collection::collection(core::cluster core,
880
+ std::string_view bucket_name,
881
+ std::string_view scope_name,
882
+ std::string_view name)
1110
883
  : impl_(std::make_shared<collection_impl>(std::move(core), bucket_name, scope_name, name))
1111
884
  {
1112
885
  }
@@ -1114,46 +887,49 @@ collection::collection(core::cluster core, std::string_view bucket_name, std::st
1114
887
  auto
1115
888
  collection::bucket_name() const -> const std::string&
1116
889
  {
1117
- return impl_->bucket_name();
890
+ return impl_->bucket_name();
1118
891
  }
1119
892
 
1120
893
  auto
1121
894
  collection::scope_name() const -> const std::string&
1122
895
  {
1123
- return impl_->scope_name();
896
+ return impl_->scope_name();
1124
897
  }
1125
898
 
1126
899
  auto
1127
900
  collection::name() const -> const std::string&
1128
901
  {
1129
- return impl_->name();
902
+ return impl_->name();
1130
903
  }
1131
904
 
1132
905
  auto
1133
906
  collection::query_indexes() const -> collection_query_index_manager
1134
907
  {
1135
- return { impl_->core(), impl_->bucket_name(), impl_->scope_name(), impl_->name() };
908
+ return { impl_->core(), impl_->bucket_name(), impl_->scope_name(), impl_->name() };
1136
909
  }
1137
910
 
1138
911
  auto
1139
912
  collection::binary() const -> binary_collection
1140
913
  {
1141
- return { impl_->core(), impl_->bucket_name(), impl_->scope_name(), impl_->name() };
914
+ return { impl_->core(), impl_->bucket_name(), impl_->scope_name(), impl_->name() };
1142
915
  }
1143
916
 
1144
917
  void
1145
918
  collection::get(std::string document_id, const get_options& options, get_handler&& handler) const
1146
919
  {
1147
- return impl_->get(std::move(document_id), options.build(), std::move(handler));
920
+ return impl_->get(std::move(document_id), options.build(), std::move(handler));
1148
921
  }
1149
922
 
1150
923
  auto
1151
- collection::get(std::string document_id, const get_options& options) const -> std::future<std::pair<key_value_error_context, get_result>>
924
+ collection::get(std::string document_id,
925
+ const get_options& options) const -> std::future<std::pair<error, get_result>>
1152
926
  {
1153
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
1154
- auto future = barrier->get_future();
1155
- get(std::move(document_id), options, [barrier](auto ctx, auto result) { barrier->set_value({ std::move(ctx), std::move(result) }); });
1156
- return future;
927
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_result>>>();
928
+ auto future = barrier->get_future();
929
+ get(std::move(document_id), options, [barrier](auto err, auto result) {
930
+ barrier->set_value({ std::move(err), std::move(result) });
931
+ });
932
+ return future;
1157
933
  }
1158
934
 
1159
935
  void
@@ -1162,19 +938,24 @@ collection::get_and_touch(std::string document_id,
1162
938
  const get_and_touch_options& options,
1163
939
  get_and_touch_handler&& handler) const
1164
940
  {
1165
- return impl_->get_and_touch(std::move(document_id), core::impl::expiry_relative(duration), options.build(), std::move(handler));
941
+ return impl_->get_and_touch(std::move(document_id),
942
+ core::impl::expiry_relative(duration),
943
+ options.build(),
944
+ std::move(handler));
1166
945
  }
1167
946
 
1168
947
  auto
1169
- collection::get_and_touch(std::string document_id, std::chrono::seconds duration, const get_and_touch_options& options) const
1170
- -> std::future<std::pair<key_value_error_context, get_result>>
948
+ collection::get_and_touch(std::string document_id,
949
+ std::chrono::seconds duration,
950
+ const get_and_touch_options& options) const
951
+ -> std::future<std::pair<error, get_result>>
1171
952
  {
1172
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
1173
- auto future = barrier->get_future();
1174
- get_and_touch(std::move(document_id), duration, options, [barrier](auto ctx, auto result) {
1175
- barrier->set_value({ std::move(ctx), std::move(result) });
1176
- });
1177
- return future;
953
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_result>>>();
954
+ auto future = barrier->get_future();
955
+ get_and_touch(std::move(document_id), duration, options, [barrier](auto err, auto result) {
956
+ barrier->set_value({ std::move(err), std::move(result) });
957
+ });
958
+ return future;
1178
959
  }
1179
960
 
1180
961
  void
@@ -1183,38 +964,49 @@ collection::get_and_touch(std::string document_id,
1183
964
  const get_and_touch_options& options,
1184
965
  get_and_touch_handler&& handler) const
1185
966
  {
1186
- return impl_->get_and_touch(std::move(document_id), core::impl::expiry_absolute(time_point), options.build(), std::move(handler));
967
+ return impl_->get_and_touch(std::move(document_id),
968
+ core::impl::expiry_absolute(time_point),
969
+ options.build(),
970
+ std::move(handler));
1187
971
  }
1188
972
 
1189
973
  auto
1190
974
  collection::get_and_touch(std::string document_id,
1191
975
  std::chrono::system_clock::time_point time_point,
1192
- const get_and_touch_options& options) const -> std::future<std::pair<key_value_error_context, get_result>>
976
+ const get_and_touch_options& options) const
977
+ -> std::future<std::pair<error, get_result>>
1193
978
  {
1194
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
1195
- auto future = barrier->get_future();
1196
- get_and_touch(std::move(document_id), time_point, options, [barrier](auto ctx, auto result) {
1197
- barrier->set_value({ std::move(ctx), std::move(result) });
1198
- });
1199
- return future;
979
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_result>>>();
980
+ auto future = barrier->get_future();
981
+ get_and_touch(std::move(document_id), time_point, options, [barrier](auto err, auto result) {
982
+ barrier->set_value({ std::move(err), std::move(result) });
983
+ });
984
+ return future;
1200
985
  }
1201
986
 
1202
987
  void
1203
- collection::touch(std::string document_id, std::chrono::seconds duration, const touch_options& options, touch_handler&& handler) const
988
+ collection::touch(std::string document_id,
989
+ std::chrono::seconds duration,
990
+ const touch_options& options,
991
+ touch_handler&& handler) const
1204
992
  {
1205
- return impl_->touch(std::move(document_id), core::impl::expiry_relative(duration), options.build(), std::move(handler));
993
+ return impl_->touch(std::move(document_id),
994
+ core::impl::expiry_relative(duration),
995
+ options.build(),
996
+ std::move(handler));
1206
997
  }
1207
998
 
1208
999
  auto
1209
- collection::touch(std::string document_id, std::chrono::seconds duration, const touch_options& options) const
1210
- -> std::future<std::pair<key_value_error_context, result>>
1000
+ collection::touch(std::string document_id,
1001
+ std::chrono::seconds duration,
1002
+ const touch_options& options) const -> std::future<std::pair<error, result>>
1211
1003
  {
1212
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, result>>>();
1213
- auto future = barrier->get_future();
1214
- touch(std::move(document_id), duration, options, [barrier](auto ctx, auto result) {
1215
- barrier->set_value({ std::move(ctx), std::move(result) });
1216
- });
1217
- return future;
1004
+ auto barrier = std::make_shared<std::promise<std::pair<error, result>>>();
1005
+ auto future = barrier->get_future();
1006
+ touch(std::move(document_id), duration, options, [barrier](auto err, auto result) {
1007
+ barrier->set_value({ std::move(err), std::move(result) });
1008
+ });
1009
+ return future;
1218
1010
  }
1219
1011
 
1220
1012
  void
@@ -1223,73 +1015,83 @@ collection::touch(std::string document_id,
1223
1015
  const touch_options& options,
1224
1016
  touch_handler&& handler) const
1225
1017
  {
1226
- return impl_->touch(std::move(document_id), core::impl::expiry_absolute(time_point), options.build(), std::move(handler));
1018
+ return impl_->touch(std::move(document_id),
1019
+ core::impl::expiry_absolute(time_point),
1020
+ options.build(),
1021
+ std::move(handler));
1227
1022
  }
1228
1023
 
1229
1024
  auto
1230
- collection::touch(std::string document_id, std::chrono::system_clock::time_point time_point, const touch_options& options) const
1231
- -> std::future<std::pair<key_value_error_context, result>>
1025
+ collection::touch(std::string document_id,
1026
+ std::chrono::system_clock::time_point time_point,
1027
+ const touch_options& options) const -> std::future<std::pair<error, result>>
1232
1028
  {
1233
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, result>>>();
1234
- auto future = barrier->get_future();
1235
- touch(std::move(document_id), time_point, options, [barrier](auto ctx, auto result) {
1236
- barrier->set_value({ std::move(ctx), std::move(result) });
1237
- });
1238
- return future;
1029
+ auto barrier = std::make_shared<std::promise<std::pair<error, result>>>();
1030
+ auto future = barrier->get_future();
1031
+ touch(std::move(document_id), time_point, options, [barrier](auto err, auto result) {
1032
+ barrier->set_value({ std::move(err), std::move(result) });
1033
+ });
1034
+ return future;
1239
1035
  }
1240
1036
 
1241
1037
  void
1242
- collection::get_any_replica(std::string document_id, const get_any_replica_options& options, get_any_replica_handler&& handler) const
1038
+ collection::get_any_replica(std::string document_id,
1039
+ const get_any_replica_options& options,
1040
+ get_any_replica_handler&& handler) const
1243
1041
  {
1244
- return impl_->get_any_replica(std::move(document_id), options.build(), std::move(handler));
1042
+ return impl_->get_any_replica(std::move(document_id), options.build(), std::move(handler));
1245
1043
  }
1246
1044
 
1247
1045
  auto
1248
1046
  collection::get_any_replica(std::string document_id, const get_any_replica_options& options) const
1249
- -> std::future<std::pair<key_value_error_context, get_replica_result>>
1047
+ -> std::future<std::pair<error, get_replica_result>>
1250
1048
  {
1251
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_replica_result>>>();
1252
- auto future = barrier->get_future();
1253
- get_any_replica(std::move(document_id), options, [barrier](auto ctx, auto result) {
1254
- barrier->set_value({ std::move(ctx), std::move(result) });
1255
- });
1256
- return future;
1049
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_replica_result>>>();
1050
+ auto future = barrier->get_future();
1051
+ get_any_replica(std::move(document_id), options, [barrier](auto err, auto result) {
1052
+ barrier->set_value({ std::move(err), std::move(result) });
1053
+ });
1054
+ return future;
1257
1055
  }
1258
1056
 
1259
1057
  void
1260
- collection::get_all_replicas(std::string document_id, const get_all_replicas_options& options, get_all_replicas_handler&& handler) const
1058
+ collection::get_all_replicas(std::string document_id,
1059
+ const get_all_replicas_options& options,
1060
+ get_all_replicas_handler&& handler) const
1261
1061
  {
1262
- return impl_->get_all_replicas(std::move(document_id), options.build(), std::move(handler));
1062
+ return impl_->get_all_replicas(std::move(document_id), options.build(), std::move(handler));
1263
1063
  }
1264
1064
 
1265
1065
  auto
1266
1066
  collection::get_all_replicas(std::string document_id, const get_all_replicas_options& options) const
1267
- -> std::future<std::pair<key_value_error_context, get_all_replicas_result>>
1067
+ -> std::future<std::pair<error, get_all_replicas_result>>
1268
1068
  {
1269
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_all_replicas_result>>>();
1270
- auto future = barrier->get_future();
1271
- get_all_replicas(std::move(document_id), options, [barrier](auto ctx, auto result) {
1272
- barrier->set_value({ std::move(ctx), std::move(result) });
1273
- });
1274
- return future;
1069
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_all_replicas_result>>>();
1070
+ auto future = barrier->get_future();
1071
+ get_all_replicas(std::move(document_id), options, [barrier](auto err, auto result) {
1072
+ barrier->set_value({ std::move(err), std::move(result) });
1073
+ });
1074
+ return future;
1275
1075
  }
1276
1076
 
1277
1077
  void
1278
- collection::remove(std::string document_id, const remove_options& options, remove_handler&& handler) const
1078
+ collection::remove(std::string document_id,
1079
+ const remove_options& options,
1080
+ remove_handler&& handler) const
1279
1081
  {
1280
- return impl_->remove(std::move(document_id), options.build(), std::move(handler));
1082
+ return impl_->remove(std::move(document_id), options.build(), std::move(handler));
1281
1083
  }
1282
1084
 
1283
1085
  auto
1284
1086
  collection::remove(std::string document_id, const remove_options& options) const
1285
- -> std::future<std::pair<key_value_error_context, mutation_result>>
1087
+ -> std::future<std::pair<error, mutation_result>>
1286
1088
  {
1287
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
1288
- auto future = barrier->get_future();
1289
- remove(std::move(document_id), options, [barrier](auto ctx, auto result) {
1290
- barrier->set_value({ std::move(ctx), std::move(result) });
1291
- });
1292
- return future;
1089
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutation_result>>>();
1090
+ auto future = barrier->get_future();
1091
+ remove(std::move(document_id), options, [barrier](auto err, auto result) {
1092
+ barrier->set_value({ std::move(err), std::move(result) });
1093
+ });
1094
+ return future;
1293
1095
  }
1294
1096
 
1295
1097
  void
@@ -1298,19 +1100,22 @@ collection::mutate_in(std::string document_id,
1298
1100
  const mutate_in_options& options,
1299
1101
  mutate_in_handler&& handler) const
1300
1102
  {
1301
- return impl_->mutate_in(std::move(document_id), specs.specs(), options.build(), std::move(handler));
1103
+ return impl_->mutate_in(
1104
+ std::move(document_id), specs.specs(), options.build(), std::move(handler));
1302
1105
  }
1303
1106
 
1304
1107
  auto
1305
- collection::mutate_in(std::string document_id, const mutate_in_specs& specs, const mutate_in_options& options) const
1306
- -> std::future<std::pair<subdocument_error_context, mutate_in_result>>
1108
+ collection::mutate_in(std::string document_id,
1109
+ const mutate_in_specs& specs,
1110
+ const mutate_in_options& options) const
1111
+ -> std::future<std::pair<error, mutate_in_result>>
1307
1112
  {
1308
- auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, mutate_in_result>>>();
1309
- auto future = barrier->get_future();
1310
- mutate_in(std::move(document_id), specs, options, [barrier](auto ctx, auto result) {
1311
- barrier->set_value({ std::move(ctx), std::move(result) });
1312
- });
1313
- return future;
1113
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutate_in_result>>>();
1114
+ auto future = barrier->get_future();
1115
+ mutate_in(std::move(document_id), specs, options, [barrier](auto err, auto result) {
1116
+ barrier->set_value({ std::move(err), std::move(result) });
1117
+ });
1118
+ return future;
1314
1119
  }
1315
1120
 
1316
1121
  void
@@ -1319,19 +1124,22 @@ collection::lookup_in(std::string document_id,
1319
1124
  const lookup_in_options& options,
1320
1125
  lookup_in_handler&& handler) const
1321
1126
  {
1322
- return impl_->lookup_in(std::move(document_id), specs.specs(), options.build(), std::move(handler));
1127
+ return impl_->lookup_in(
1128
+ std::move(document_id), specs.specs(), options.build(), std::move(handler));
1323
1129
  }
1324
1130
 
1325
1131
  auto
1326
- collection::lookup_in(std::string document_id, const lookup_in_specs& specs, const lookup_in_options& options) const
1327
- -> std::future<std::pair<subdocument_error_context, lookup_in_result>>
1132
+ collection::lookup_in(std::string document_id,
1133
+ const lookup_in_specs& specs,
1134
+ const lookup_in_options& options) const
1135
+ -> std::future<std::pair<error, lookup_in_result>>
1328
1136
  {
1329
- auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, lookup_in_result>>>();
1330
- auto future = barrier->get_future();
1331
- lookup_in(std::move(document_id), specs, options, [barrier](auto ctx, auto result) {
1332
- barrier->set_value({ std::move(ctx), std::move(result) });
1333
- });
1334
- return future;
1137
+ auto barrier = std::make_shared<std::promise<std::pair<error, lookup_in_result>>>();
1138
+ auto future = barrier->get_future();
1139
+ lookup_in(std::move(document_id), specs, options, [barrier](auto err, auto result) {
1140
+ barrier->set_value({ std::move(err), std::move(result) });
1141
+ });
1142
+ return future;
1335
1143
  }
1336
1144
 
1337
1145
  void
@@ -1340,21 +1148,22 @@ collection::lookup_in_all_replicas(std::string document_id,
1340
1148
  const lookup_in_all_replicas_options& options,
1341
1149
  lookup_in_all_replicas_handler&& handler) const
1342
1150
  {
1343
- return impl_->lookup_in_all_replicas(std::move(document_id), specs.specs(), options.build(), std::move(handler));
1151
+ return impl_->lookup_in_all_replicas(
1152
+ std::move(document_id), specs.specs(), options.build(), std::move(handler));
1344
1153
  }
1345
1154
 
1346
1155
  auto
1347
1156
  collection::lookup_in_all_replicas(std::string document_id,
1348
1157
  const lookup_in_specs& specs,
1349
1158
  const lookup_in_all_replicas_options& options) const
1350
- -> std::future<std::pair<subdocument_error_context, lookup_in_all_replicas_result>>
1159
+ -> std::future<std::pair<error, lookup_in_all_replicas_result>>
1351
1160
  {
1352
- auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, lookup_in_all_replicas_result>>>();
1353
- auto future = barrier->get_future();
1354
- lookup_in_all_replicas(std::move(document_id), specs, options, [barrier](auto ctx, auto result) {
1355
- barrier->set_value({ std::move(ctx), std::move(result) });
1356
- });
1357
- return future;
1161
+ auto barrier = std::make_shared<std::promise<std::pair<error, lookup_in_all_replicas_result>>>();
1162
+ auto future = barrier->get_future();
1163
+ lookup_in_all_replicas(std::move(document_id), specs, options, [barrier](auto err, auto result) {
1164
+ barrier->set_value({ std::move(err), std::move(result) });
1165
+ });
1166
+ return future;
1358
1167
  }
1359
1168
 
1360
1169
  void
@@ -1363,19 +1172,22 @@ collection::lookup_in_any_replica(std::string document_id,
1363
1172
  const lookup_in_any_replica_options& options,
1364
1173
  lookup_in_any_replica_handler&& handler) const
1365
1174
  {
1366
- return impl_->lookup_in_any_replica(std::move(document_id), specs.specs(), options.build(), std::move(handler));
1175
+ return impl_->lookup_in_any_replica(
1176
+ std::move(document_id), specs.specs(), options.build(), std::move(handler));
1367
1177
  }
1368
1178
 
1369
1179
  auto
1370
- collection::lookup_in_any_replica(std::string document_id, const lookup_in_specs& specs, const lookup_in_any_replica_options& options) const
1371
- -> std::future<std::pair<subdocument_error_context, lookup_in_replica_result>>
1180
+ collection::lookup_in_any_replica(std::string document_id,
1181
+ const lookup_in_specs& specs,
1182
+ const lookup_in_any_replica_options& options) const
1183
+ -> std::future<std::pair<error, lookup_in_replica_result>>
1372
1184
  {
1373
- auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, lookup_in_replica_result>>>();
1374
- auto future = barrier->get_future();
1375
- lookup_in_any_replica(std::move(document_id), specs, options, [barrier](auto ctx, auto result) {
1376
- barrier->set_value({ std::move(ctx), std::move(result) });
1377
- });
1378
- return future;
1185
+ auto barrier = std::make_shared<std::promise<std::pair<error, lookup_in_replica_result>>>();
1186
+ auto future = barrier->get_future();
1187
+ lookup_in_any_replica(std::move(document_id), specs, options, [barrier](auto err, auto result) {
1188
+ barrier->set_value({ std::move(err), std::move(result) });
1189
+ });
1190
+ return future;
1379
1191
  }
1380
1192
 
1381
1193
  void
@@ -1384,121 +1196,155 @@ collection::get_and_lock(std::string document_id,
1384
1196
  const get_and_lock_options& options,
1385
1197
  get_and_lock_handler&& handler) const
1386
1198
  {
1387
- return impl_->get_and_lock(std::move(document_id), lock_duration, options.build(), std::move(handler));
1199
+ return impl_->get_and_lock(
1200
+ std::move(document_id), lock_duration, options.build(), std::move(handler));
1388
1201
  }
1389
1202
 
1390
1203
  auto
1391
- collection::get_and_lock(std::string document_id, std::chrono::seconds lock_duration, const get_and_lock_options& options) const
1392
- -> std::future<std::pair<key_value_error_context, get_result>>
1204
+ collection::get_and_lock(std::string document_id,
1205
+ std::chrono::seconds lock_duration,
1206
+ const get_and_lock_options& options) const
1207
+ -> std::future<std::pair<error, get_result>>
1393
1208
  {
1394
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
1395
- auto future = barrier->get_future();
1396
- get_and_lock(std::move(document_id), lock_duration, options, [barrier](auto ctx, auto result) {
1397
- barrier->set_value({ std::move(ctx), std::move(result) });
1398
- });
1399
- return future;
1209
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_result>>>();
1210
+ auto future = barrier->get_future();
1211
+ get_and_lock(std::move(document_id), lock_duration, options, [barrier](auto err, auto result) {
1212
+ barrier->set_value({ std::move(err), std::move(result) });
1213
+ });
1214
+ return future;
1400
1215
  }
1401
1216
 
1402
1217
  void
1403
- collection::unlock(std::string document_id, couchbase::cas cas, const unlock_options& options, unlock_handler&& handler) const
1218
+ collection::unlock(std::string document_id,
1219
+ couchbase::cas cas,
1220
+ const unlock_options& options,
1221
+ unlock_handler&& handler) const
1404
1222
  {
1405
- return impl_->unlock(std::move(document_id), cas, options.build(), std::move(handler));
1223
+ return impl_->unlock(std::move(document_id), cas, options.build(), std::move(handler));
1406
1224
  }
1407
1225
 
1408
1226
  auto
1409
- collection::unlock(std::string document_id, couchbase::cas cas, const unlock_options& options) const -> std::future<key_value_error_context>
1227
+ collection::unlock(std::string document_id,
1228
+ couchbase::cas cas,
1229
+ const unlock_options& options) const -> std::future<error>
1410
1230
  {
1411
- auto barrier = std::make_shared<std::promise<key_value_error_context>>();
1412
- auto future = barrier->get_future();
1413
- unlock(std::move(document_id), cas, options, [barrier](auto ctx) { barrier->set_value({ std::move(ctx) }); });
1414
- return future;
1231
+ auto barrier = std::make_shared<std::promise<error>>();
1232
+ auto future = barrier->get_future();
1233
+ unlock(std::move(document_id), cas, options, [barrier](auto err) {
1234
+ barrier->set_value({ std::move(err) });
1235
+ });
1236
+ return future;
1415
1237
  }
1416
1238
 
1417
1239
  void
1418
- collection::exists(std::string document_id, const exists_options& options, exists_handler&& handler) const
1240
+ collection::exists(std::string document_id,
1241
+ const exists_options& options,
1242
+ exists_handler&& handler) const
1419
1243
  {
1420
- return impl_->exists(std::move(document_id), options.build(), std::move(handler));
1244
+ return impl_->exists(std::move(document_id), options.build(), std::move(handler));
1421
1245
  }
1422
1246
 
1423
1247
  auto
1424
1248
  collection::exists(std::string document_id, const exists_options& options) const
1425
- -> std::future<std::pair<key_value_error_context, exists_result>>
1249
+ -> std::future<std::pair<error, exists_result>>
1426
1250
  {
1427
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, exists_result>>>();
1428
- auto future = barrier->get_future();
1429
- exists(std::move(document_id), options, [barrier](auto ctx, auto result) {
1430
- barrier->set_value({ std::move(ctx), std::move(result) });
1431
- });
1432
- return future;
1251
+ auto barrier = std::make_shared<std::promise<std::pair<error, exists_result>>>();
1252
+ auto future = barrier->get_future();
1253
+ exists(std::move(document_id), options, [barrier](auto err, auto result) {
1254
+ barrier->set_value({ std::move(err), std::move(result) });
1255
+ });
1256
+ return future;
1433
1257
  }
1434
1258
 
1435
1259
  void
1436
- collection::upsert(std::string document_id, codec::encoded_value document, const upsert_options& options, upsert_handler&& handler) const
1260
+ collection::upsert(std::string document_id,
1261
+ codec::encoded_value document,
1262
+ const upsert_options& options,
1263
+ upsert_handler&& handler) const
1437
1264
  {
1438
- return impl_->upsert(std::move(document_id), std::move(document), options.build(), std::move(handler));
1265
+ return impl_->upsert(
1266
+ std::move(document_id), std::move(document), options.build(), std::move(handler));
1439
1267
  }
1440
1268
 
1441
1269
  auto
1442
- collection::upsert(std::string document_id, codec::encoded_value document, const upsert_options& options) const
1443
- -> std::future<std::pair<key_value_error_context, mutation_result>>
1270
+ collection::upsert(std::string document_id,
1271
+ codec::encoded_value document,
1272
+ const upsert_options& options) const
1273
+ -> std::future<std::pair<error, mutation_result>>
1444
1274
  {
1445
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
1446
- auto future = barrier->get_future();
1447
- upsert(std::move(document_id), std::move(document), options, [barrier](auto ctx, auto result) {
1448
- barrier->set_value({ std::move(ctx), std::move(result) });
1449
- });
1450
- return future;
1275
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutation_result>>>();
1276
+ auto future = barrier->get_future();
1277
+ upsert(std::move(document_id), std::move(document), options, [barrier](auto err, auto result) {
1278
+ barrier->set_value({ std::move(err), std::move(result) });
1279
+ });
1280
+ return future;
1451
1281
  }
1452
1282
 
1453
1283
  void
1454
- collection::insert(std::string document_id, codec::encoded_value document, const insert_options& options, insert_handler&& handler) const
1284
+ collection::insert(std::string document_id,
1285
+ codec::encoded_value document,
1286
+ const insert_options& options,
1287
+ insert_handler&& handler) const
1455
1288
  {
1456
- return impl_->insert(std::move(document_id), std::move(document), options.build(), std::move(handler));
1289
+ return impl_->insert(
1290
+ std::move(document_id), std::move(document), options.build(), std::move(handler));
1457
1291
  }
1458
1292
 
1459
1293
  auto
1460
- collection::insert(std::string document_id, codec::encoded_value document, const insert_options& options) const
1461
- -> std::future<std::pair<key_value_error_context, mutation_result>>
1294
+ collection::insert(std::string document_id,
1295
+ codec::encoded_value document,
1296
+ const insert_options& options) const
1297
+ -> std::future<std::pair<error, mutation_result>>
1462
1298
  {
1463
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
1464
- auto future = barrier->get_future();
1465
- insert(std::move(document_id), std::move(document), options, [barrier](auto ctx, auto result) {
1466
- barrier->set_value({ std::move(ctx), std::move(result) });
1467
- });
1468
- return future;
1299
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutation_result>>>();
1300
+ auto future = barrier->get_future();
1301
+ insert(std::move(document_id), std::move(document), options, [barrier](auto err, auto result) {
1302
+ barrier->set_value({ std::move(err), std::move(result) });
1303
+ });
1304
+ return future;
1469
1305
  }
1470
1306
 
1471
1307
  void
1472
- collection::replace(std::string document_id, codec::encoded_value document, const replace_options& options, replace_handler&& handler) const
1308
+ collection::replace(std::string document_id,
1309
+ codec::encoded_value document,
1310
+ const replace_options& options,
1311
+ replace_handler&& handler) const
1473
1312
  {
1474
- return impl_->replace(std::move(document_id), std::move(document), options.build(), std::move(handler));
1313
+ return impl_->replace(
1314
+ std::move(document_id), std::move(document), options.build(), std::move(handler));
1475
1315
  }
1476
1316
 
1477
1317
  auto
1478
- collection::replace(std::string document_id, codec::encoded_value document, const replace_options& options) const
1479
- -> std::future<std::pair<key_value_error_context, mutation_result>>
1318
+ collection::replace(std::string document_id,
1319
+ codec::encoded_value document,
1320
+ const replace_options& options) const
1321
+ -> std::future<std::pair<error, mutation_result>>
1480
1322
  {
1481
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
1482
- auto future = barrier->get_future();
1483
- replace(std::move(document_id), std::move(document), options, [barrier](auto ctx, auto result) {
1484
- barrier->set_value({ std::move(ctx), std::move(result) });
1485
- });
1486
- return future;
1323
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutation_result>>>();
1324
+ auto future = barrier->get_future();
1325
+ replace(std::move(document_id), std::move(document), options, [barrier](auto err, auto result) {
1326
+ barrier->set_value({ std::move(err), std::move(result) });
1327
+ });
1328
+ return future;
1487
1329
  }
1488
1330
 
1489
1331
  void
1490
- collection::scan(const couchbase::scan_type& scan_type, const couchbase::scan_options& options, couchbase::scan_handler&& handler) const
1332
+ collection::scan(const couchbase::scan_type& scan_type,
1333
+ const couchbase::scan_options& options,
1334
+ couchbase::scan_handler&& handler) const
1491
1335
  {
1492
- return impl_->scan(scan_type.build(), options.build(), std::move(handler));
1336
+ return impl_->scan(scan_type.build(), options.build(), std::move(handler));
1493
1337
  }
1494
1338
 
1495
1339
  auto
1496
- collection::scan(const couchbase::scan_type& scan_type, const couchbase::scan_options& options) const
1497
- -> std::future<std::pair<std::error_code, scan_result>>
1340
+ collection::scan(const couchbase::scan_type& scan_type, const couchbase::scan_options& options)
1341
+ const -> std::future<std::pair<error, scan_result>>
1498
1342
  {
1499
- auto barrier = std::make_shared<std::promise<std::pair<std::error_code, scan_result>>>();
1500
- auto future = barrier->get_future();
1501
- scan(scan_type, options, [barrier](auto ec, auto result) { barrier->set_value({ ec, std::move(result) }); });
1502
- return future;
1343
+ auto barrier = std::make_shared<std::promise<std::pair<error, scan_result>>>();
1344
+ auto future = barrier->get_future();
1345
+ scan(scan_type, options, [barrier](auto err, auto result) {
1346
+ barrier->set_value({ err, std::move(result) });
1347
+ });
1348
+ return future;
1503
1349
  }
1504
1350
  } // namespace couchbase