couchbase 4.2.8 → 4.2.10

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 (370) hide show
  1. package/CMakeLists.txt +1 -1
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +139 -56
  3. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
  4. package/deps/couchbase-cxx-client/CMakeLists.txt +401 -424
  5. package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +7 -3
  6. package/deps/couchbase-cxx-client/cmake/OpenSSL.cmake +1 -0
  7. package/deps/couchbase-cxx-client/core/agent_config.hxx +1 -1
  8. package/deps/couchbase-cxx-client/core/agent_group.cxx +0 -1
  9. package/deps/couchbase-cxx-client/core/agent_group.hxx +9 -0
  10. package/deps/couchbase-cxx-client/core/agent_group_config.hxx +1 -1
  11. package/deps/couchbase-cxx-client/core/bucket.cxx +74 -10
  12. package/deps/couchbase-cxx-client/core/bucket.hxx +4 -2
  13. package/deps/couchbase-cxx-client/core/cluster.cxx +1491 -108
  14. package/deps/couchbase-cxx-client/core/cluster.hxx +183 -473
  15. package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +1 -1
  16. package/deps/couchbase-cxx-client/core/cluster_options.cxx +12 -2
  17. package/deps/couchbase-cxx-client/core/cluster_options.hxx +9 -8
  18. package/deps/couchbase-cxx-client/core/config_profiles.cxx +2 -2
  19. package/deps/couchbase-cxx-client/core/config_profiles.hxx +1 -1
  20. package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +1 -2
  21. package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +3 -2
  22. package/deps/couchbase-cxx-client/core/diagnostics.hxx +0 -1
  23. package/deps/couchbase-cxx-client/core/dispatcher.cxx +2 -2
  24. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +38 -76
  25. package/deps/couchbase-cxx-client/core/impl/analytics.hxx +40 -0
  26. package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +820 -0
  27. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +403 -0
  28. package/deps/couchbase-cxx-client/core/impl/bucket.cxx +102 -0
  29. package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +433 -0
  30. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +299 -44
  31. package/deps/couchbase-cxx-client/core/impl/collection.cxx +1384 -0
  32. package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +306 -0
  33. package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +3 -1
  34. package/deps/couchbase-cxx-client/core/impl/diagnostics.cxx +294 -0
  35. package/deps/couchbase-cxx-client/core/impl/diagnostics.hxx +39 -0
  36. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +2 -0
  37. package/deps/couchbase-cxx-client/core/{operations/mcbp_noop.cxx → impl/doc_id_query.cxx} +19 -15
  38. package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +4 -2
  39. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +0 -10
  40. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +0 -10
  41. package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +24 -17
  42. package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
  43. package/deps/couchbase-cxx-client/core/impl/query.cxx +45 -68
  44. package/deps/couchbase-cxx-client/core/impl/query.hxx +34 -0
  45. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +628 -0
  46. package/deps/couchbase-cxx-client/core/impl/scope.cxx +187 -0
  47. package/deps/couchbase-cxx-client/core/impl/search.cxx +81 -57
  48. package/deps/couchbase-cxx-client/core/impl/search.hxx +45 -0
  49. package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +712 -0
  50. package/deps/couchbase-cxx-client/core/impl/search_request.cxx +139 -0
  51. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +12 -0
  52. package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +87 -0
  53. package/deps/couchbase-cxx-client/core/impl/vector_query.cxx +42 -0
  54. package/deps/couchbase-cxx-client/core/impl/vector_search.cxx +40 -0
  55. package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +23 -25
  56. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +28 -0
  57. package/deps/couchbase-cxx-client/core/io/dns_config.hxx +6 -25
  58. package/deps/couchbase-cxx-client/core/io/http_session.hxx +6 -3
  59. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +9 -1
  60. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +1 -1
  61. package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +3 -2
  62. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +75 -53
  63. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +3 -1
  64. package/deps/couchbase-cxx-client/core/logger/logger.cxx +1 -1
  65. package/deps/couchbase-cxx-client/core/logger/logger.hxx +4 -4
  66. package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +1 -1
  67. package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +1 -1
  68. package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +1 -1
  69. package/deps/couchbase-cxx-client/core/meta/features.hxx +38 -0
  70. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +23 -2
  71. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -1
  72. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +37 -1
  73. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +11 -0
  74. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +2 -0
  75. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +2 -0
  76. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +2 -0
  77. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +2 -0
  78. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +2 -0
  79. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +2 -0
  80. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +2 -0
  81. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +2 -0
  82. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +2 -0
  83. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +2 -0
  84. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +1 -1
  85. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +2 -0
  86. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +2 -0
  87. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +2 -0
  88. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +2 -0
  89. package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +3 -1
  90. package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +9 -6
  91. package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +1 -1
  92. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +2 -0
  93. package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +9 -8
  94. package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +1 -1
  95. package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +9 -5
  96. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +2 -0
  97. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +2 -0
  98. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +2 -0
  99. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +2 -0
  100. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +2 -0
  101. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +2 -0
  102. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +2 -0
  103. package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +2 -0
  104. package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +2 -0
  105. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +1 -1
  106. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +2 -2
  107. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +4 -1
  108. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +4 -1
  109. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +1 -1
  110. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +1 -1
  111. package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +2 -0
  112. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +2 -0
  113. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +2 -0
  114. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +4 -4
  115. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +4 -4
  116. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +19 -1
  117. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +3 -0
  118. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +23 -1
  119. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +3 -0
  120. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +23 -1
  121. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +3 -0
  122. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +23 -1
  123. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +3 -0
  124. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +19 -1
  125. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +3 -0
  126. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +19 -1
  127. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +2 -0
  128. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +39 -22
  129. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +3 -0
  130. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +20 -1
  131. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +3 -0
  132. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +2 -0
  133. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +19 -1
  134. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +3 -0
  135. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +2 -0
  136. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +2 -0
  137. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +2 -0
  138. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +2 -0
  139. package/deps/couchbase-cxx-client/core/operations.hxx +0 -1
  140. package/deps/couchbase-cxx-client/core/operations_fwd.hxx +260 -0
  141. package/deps/couchbase-cxx-client/core/origin.cxx +146 -5
  142. package/deps/couchbase-cxx-client/core/origin.hxx +30 -140
  143. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +3 -3
  144. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +5 -0
  145. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +4 -4
  146. package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +6 -0
  147. package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +3 -0
  148. package/deps/couchbase-cxx-client/core/protocol/status.cxx +6 -0
  149. package/deps/couchbase-cxx-client/core/protocol/status.hxx +1 -0
  150. package/deps/couchbase-cxx-client/core/query_context.hxx +11 -7
  151. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +1 -1
  152. package/deps/couchbase-cxx-client/core/topology/collections_manifest.hxx +1 -1
  153. package/deps/couchbase-cxx-client/core/topology/collections_manifest_json.hxx +1 -1
  154. package/deps/couchbase-cxx-client/core/topology/configuration.cxx +23 -0
  155. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +8 -12
  156. package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +3 -3
  157. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +2 -0
  158. package/deps/couchbase-cxx-client/core/topology/error_map.hxx +2 -2
  159. package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +4 -0
  160. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +58 -0
  161. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +5 -40
  162. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +30 -0
  163. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +18 -18
  164. package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +36 -0
  165. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +39 -41
  166. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +2 -2
  167. package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +3 -1
  168. package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +2 -0
  169. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +32 -0
  170. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +4 -30
  171. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +41 -0
  172. package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +17 -15
  173. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +1 -1
  174. package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +4 -4
  175. package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +5 -13
  176. package/deps/couchbase-cxx-client/core/transactions/result.hxx +0 -26
  177. package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +46 -0
  178. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +16 -14
  179. package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +6 -6
  180. package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +48 -0
  181. package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +1 -0
  182. package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +61 -4
  183. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +9 -8
  184. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +9 -16
  185. package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +7 -6
  186. package/deps/couchbase-cxx-client/core/transactions.hxx +6 -5
  187. package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +4 -3
  188. package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +4 -4
  189. package/deps/couchbase-cxx-client/core/vector_query_combination.hxx +23 -0
  190. package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +44 -0
  191. package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +463 -0
  192. package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +44 -0
  193. package/deps/couchbase-cxx-client/couchbase/append_options.hxx +0 -24
  194. package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +1 -1
  195. package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +19 -115
  196. package/deps/couchbase-cxx-client/couchbase/bucket.hxx +42 -30
  197. package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +8 -7
  198. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +0 -1
  199. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +151 -73
  200. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +1 -27
  201. package/deps/couchbase-cxx-client/couchbase/codec/json_transcoder.hxx +1 -1
  202. package/deps/couchbase-cxx-client/couchbase/codec/raw_binary_transcoder.hxx +2 -1
  203. package/deps/couchbase-cxx-client/couchbase/codec/raw_json_transcoder.hxx +78 -0
  204. package/deps/couchbase-cxx-client/couchbase/codec/raw_string_transcoder.hxx +72 -0
  205. package/deps/couchbase-cxx-client/couchbase/collection.hxx +176 -386
  206. package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +8 -9
  207. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +21 -24
  208. package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +116 -0
  209. package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +3 -3
  210. package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +32 -3
  211. package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +120 -0
  212. package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +85 -0
  213. package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +103 -0
  214. package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +63 -0
  215. package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +0 -23
  216. package/deps/couchbase-cxx-client/couchbase/diagnostics_options.hxx +75 -0
  217. package/deps/couchbase-cxx-client/couchbase/diagnostics_result.hxx +124 -0
  218. package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +43 -0
  219. package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +105 -0
  220. package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +103 -0
  221. package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +84 -0
  222. package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +103 -0
  223. package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +63 -0
  224. package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +43 -0
  225. package/deps/couchbase-cxx-client/couchbase/endpoint_diagnostics.hxx +206 -0
  226. package/deps/couchbase-cxx-client/couchbase/endpoint_ping_report.hxx +205 -0
  227. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +22 -1
  228. package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +0 -23
  229. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +6 -0
  230. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +3 -0
  231. package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +37 -0
  232. package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +43 -0
  233. package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +66 -0
  234. package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +65 -0
  235. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +1 -4
  236. package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +0 -23
  237. package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +45 -0
  238. package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +0 -24
  239. package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +0 -24
  240. package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +0 -23
  241. package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +43 -0
  242. package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +121 -0
  243. package/deps/couchbase-cxx-client/couchbase/get_options.hxx +1 -29
  244. package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +67 -0
  245. package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +44 -0
  246. package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +0 -23
  247. package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +0 -24
  248. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +12 -0
  249. package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +1 -0
  250. package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +0 -24
  251. package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +48 -0
  252. package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +48 -0
  253. package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +239 -0
  254. package/deps/couchbase-cxx-client/couchbase/management/collection_spec.hxx +1 -1
  255. package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +3 -3
  256. package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +40 -0
  257. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -1
  258. package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +0 -24
  259. package/deps/couchbase-cxx-client/couchbase/network_options.hxx +1 -1
  260. package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +43 -0
  261. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +19 -0
  262. package/deps/couchbase-cxx-client/couchbase/ping_options.hxx +93 -0
  263. package/deps/couchbase-cxx-client/couchbase/ping_result.hxx +118 -0
  264. package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +0 -24
  265. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +99 -20
  266. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +0 -21
  267. package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +0 -23
  268. package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +63 -0
  269. package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +0 -24
  270. package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +43 -0
  271. package/deps/couchbase-cxx-client/couchbase/scope.hxx +37 -53
  272. package/deps/couchbase-cxx-client/couchbase/scope_search_index_manager.hxx +291 -0
  273. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +1 -7
  274. package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +26 -0
  275. package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +292 -0
  276. package/deps/couchbase-cxx-client/couchbase/search_request.hxx +120 -0
  277. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +10 -0
  278. package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +84 -0
  279. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +1 -1
  280. package/deps/couchbase-cxx-client/couchbase/service_type.hxx +58 -0
  281. package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +0 -24
  282. package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +1 -1
  283. package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +10 -7
  284. package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +10 -10
  285. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +8 -58
  286. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +28 -70
  287. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +7 -2
  288. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +2 -1
  289. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +11 -38
  290. package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +43 -0
  291. package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +0 -24
  292. package/deps/couchbase-cxx-client/couchbase/update_collection_options.hxx +32 -3
  293. package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +0 -24
  294. package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +41 -0
  295. package/deps/couchbase-cxx-client/couchbase/vector_query.hxx +99 -0
  296. package/deps/couchbase-cxx-client/couchbase/vector_search.hxx +85 -0
  297. package/deps/couchbase-cxx-client/couchbase/vector_search_options.hxx +76 -0
  298. package/dist/binding.d.ts +16 -9
  299. package/dist/binding.js +4 -1
  300. package/dist/bindingutilities.d.ts +6 -1
  301. package/dist/bindingutilities.js +17 -1
  302. package/dist/cluster.d.ts +12 -1
  303. package/dist/cluster.js +22 -0
  304. package/dist/collection.js +3 -3
  305. package/dist/couchbase.d.ts +1 -0
  306. package/dist/couchbase.js +1 -0
  307. package/dist/errors.d.ts +9 -0
  308. package/dist/errors.js +14 -2
  309. package/dist/searchexecutor.d.ts +2 -2
  310. package/dist/searchexecutor.js +19 -3
  311. package/dist/searchtypes.d.ts +46 -0
  312. package/dist/searchtypes.js +81 -1
  313. package/dist/transactions.d.ts +2 -0
  314. package/dist/transactions.js +2 -3
  315. package/dist/usermanager.js +1 -1
  316. package/dist/vectorsearch.d.ts +99 -0
  317. package/dist/vectorsearch.js +132 -0
  318. package/package.json +7 -7
  319. package/src/binding.cpp +1 -0
  320. package/src/connection.cpp +12 -9
  321. package/src/connection.hpp +3 -3
  322. package/src/connection_autogen.cpp +7 -5
  323. package/src/constants.cpp +14 -0
  324. package/src/instance.cpp +2 -2
  325. package/src/instance.hpp +1 -1
  326. package/src/jstocbpp_autogen.hpp +45 -45
  327. package/src/jstocbpp_basic.hpp +2 -0
  328. package/src/jstocbpp_errors.hpp +1 -0
  329. package/src/jstocbpp_transactions.hpp +6 -22
  330. package/src/mutationtoken.hpp +1 -0
  331. package/tools/gen-bindings-json.py +41 -16
  332. package/deps/couchbase-cxx-client/core/impl/append.cxx +0 -87
  333. package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +0 -157
  334. package/deps/couchbase-cxx-client/core/impl/create_bucket.cxx +0 -158
  335. package/deps/couchbase-cxx-client/core/impl/create_collection.cxx +0 -83
  336. package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +0 -232
  337. package/deps/couchbase-cxx-client/core/impl/create_scope.cxx +0 -69
  338. package/deps/couchbase-cxx-client/core/impl/decrement.cxx +0 -96
  339. package/deps/couchbase-cxx-client/core/impl/drop_bucket.cxx +0 -66
  340. package/deps/couchbase-cxx-client/core/impl/drop_collection.cxx +0 -76
  341. package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +0 -187
  342. package/deps/couchbase-cxx-client/core/impl/drop_scope.cxx +0 -68
  343. package/deps/couchbase-cxx-client/core/impl/exists.cxx +0 -47
  344. package/deps/couchbase-cxx-client/core/impl/flush_bucket.cxx +0 -66
  345. package/deps/couchbase-cxx-client/core/impl/get.cxx +0 -68
  346. package/deps/couchbase-cxx-client/core/impl/get_all_buckets.cxx +0 -178
  347. package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +0 -106
  348. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.cxx +0 -145
  349. package/deps/couchbase-cxx-client/core/impl/get_all_scopes.cxx +0 -94
  350. package/deps/couchbase-cxx-client/core/impl/get_and_lock.cxx +0 -49
  351. package/deps/couchbase-cxx-client/core/impl/get_and_touch.cxx +0 -49
  352. package/deps/couchbase-cxx-client/core/impl/get_any_replica.cxx +0 -134
  353. package/deps/couchbase-cxx-client/core/impl/get_bucket.cxx +0 -168
  354. package/deps/couchbase-cxx-client/core/impl/increment.cxx +0 -96
  355. package/deps/couchbase-cxx-client/core/impl/insert.cxx +0 -90
  356. package/deps/couchbase-cxx-client/core/impl/lookup_in.cxx +0 -69
  357. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.cxx +0 -178
  358. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.cxx +0 -169
  359. package/deps/couchbase-cxx-client/core/impl/mutate_in.cxx +0 -125
  360. package/deps/couchbase-cxx-client/core/impl/prepend.cxx +0 -87
  361. package/deps/couchbase-cxx-client/core/impl/remove.cxx +0 -86
  362. package/deps/couchbase-cxx-client/core/impl/replace.cxx +0 -102
  363. package/deps/couchbase-cxx-client/core/impl/touch.cxx +0 -49
  364. package/deps/couchbase-cxx-client/core/impl/unlock.cxx +0 -47
  365. package/deps/couchbase-cxx-client/core/impl/update_bucket.cxx +0 -133
  366. package/deps/couchbase-cxx-client/core/impl/update_collection.cxx +0 -83
  367. package/deps/couchbase-cxx-client/core/impl/upsert.cxx +0 -100
  368. package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +0 -196
  369. package/deps/couchbase-cxx-client/core/operations/mcbp_noop.hxx +0 -49
  370. /package/deps/couchbase-cxx-client/core/impl/{streaming_json_lexter_error_category.cxx → streaming_json_lexer_error_category.cxx} +0 -0
@@ -17,32 +17,33 @@
17
17
 
18
18
  #pragma once
19
19
 
20
+ #include <couchbase/analytics_index_manager.hxx>
20
21
  #include <couchbase/analytics_options.hxx>
21
22
  #include <couchbase/bucket.hxx>
22
23
  #include <couchbase/bucket_manager.hxx>
23
24
  #include <couchbase/cluster_options.hxx>
25
+ #include <couchbase/diagnostics_options.hxx>
26
+ #include <couchbase/ping_options.hxx>
24
27
  #include <couchbase/query_index_manager.hxx>
25
28
  #include <couchbase/query_options.hxx>
29
+ #include <couchbase/search_index_manager.hxx>
26
30
  #include <couchbase/search_options.hxx>
27
31
  #include <couchbase/search_query.hxx>
32
+ #include <couchbase/search_request.hxx>
28
33
  #include <couchbase/transactions.hxx>
29
34
 
30
35
  #include <memory>
31
36
 
32
- #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
33
- namespace couchbase::core
37
+ namespace couchbase
34
38
  {
35
- namespace transactions
39
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
40
+ namespace core
36
41
  {
37
- class transactions;
38
- } // namespace transactions
39
-
40
42
  class cluster;
41
- } // namespace couchbase::core
43
+ } // namespace core
44
+ class cluster_impl;
42
45
  #endif
43
46
 
44
- namespace couchbase
45
- {
46
47
  /**
47
48
  * The {@link cluster} is the main entry point when connecting to a Couchbase cluster.
48
49
  *
@@ -55,21 +56,18 @@ class cluster
55
56
  /**
56
57
  * Connect to a Couchbase cluster.
57
58
  *
58
- * @tparam Handler callable type that implements @ref cluster_connect_handler signature
59
- *
60
59
  * @param io IO context
61
60
  * @param connection_string connection string used to locate the Couchbase cluster object.
62
61
  * @param options options to customize connection (note, that connection_string takes precedence over this options).
63
- * @param handler the handler that implements @ref cluster_connect_handler
62
+ * @param handler the handler
64
63
  *
65
64
  * @since 1.0.0
66
65
  * @committed
67
66
  */
68
- template<typename Handler>
69
- static void connect(asio::io_context& io, const std::string& connection_string, const cluster_options& options, Handler&& handler)
70
- {
71
- return core::impl::initiate_cluster_connect(io, connection_string, options, std::forward<Handler>(handler));
72
- }
67
+ static void connect(asio::io_context& io,
68
+ const std::string& connection_string,
69
+ const cluster_options& options,
70
+ cluster_connect_handler&& handler);
73
71
 
74
72
  /**
75
73
  * Connect to a Couchbase cluster.
@@ -84,13 +82,7 @@ class cluster
84
82
  * @committed
85
83
  */
86
84
  [[nodiscard]] static auto connect(asio::io_context& io, const std::string& connection_string, const cluster_options& options)
87
- -> std::future<std::pair<cluster, std::error_code>>
88
- {
89
- auto barrier = std::make_shared<std::promise<std::pair<cluster, std::error_code>>>();
90
- auto future = barrier->get_future();
91
- connect(io, connection_string, options, [barrier](auto c, auto ec) { barrier->set_value({ std::move(c), ec }); });
92
- return future;
93
- }
85
+ -> std::future<std::pair<cluster, std::error_code>>;
94
86
 
95
87
  cluster() = default;
96
88
  cluster(const cluster& other) = default;
@@ -98,7 +90,7 @@ class cluster
98
90
  auto operator=(const cluster& other) -> cluster& = default;
99
91
  auto operator=(cluster&& other) -> cluster& = default;
100
92
 
101
- void close();
93
+ void close() const;
102
94
 
103
95
  /**
104
96
  * Wraps low-level implementation of the SDK to provide common API.
@@ -108,10 +100,7 @@ class cluster
108
100
  * @since 1.0.0
109
101
  * @volatile
110
102
  */
111
- explicit cluster(std::shared_ptr<couchbase::core::cluster> core)
112
- : core_(std::move(core))
113
- {
114
- }
103
+ explicit cluster(core::cluster core);
115
104
 
116
105
  /**
117
106
  * Opens a {@link bucket} with the given name.
@@ -122,16 +111,11 @@ class cluster
122
111
  * @since 1.0.0
123
112
  * @committed
124
113
  */
125
- [[nodiscard]] auto bucket(std::string_view bucket_name) const -> bucket
126
- {
127
- return { core_, bucket_name };
128
- }
114
+ [[nodiscard]] auto bucket(std::string_view bucket_name) const -> bucket;
129
115
 
130
116
  /**
131
117
  * Performs a query against the query (N1QL) services.
132
118
  *
133
- * @tparam Handler callable type that implements @ref query_handler signature
134
- *
135
119
  * @param statement the N1QL query statement.
136
120
  * @param options options to customize the query request.
137
121
  * @param handler the handler that implements @ref query_handler
@@ -142,11 +126,7 @@ class cluster
142
126
  * @since 1.0.0
143
127
  * @committed
144
128
  */
145
- template<typename Handler>
146
- void query(std::string statement, const query_options& options, Handler&& handler) const
147
- {
148
- return core::impl::initiate_query_operation(core_, std::move(statement), {}, options.build(), std::forward<Handler>(handler));
149
- }
129
+ void query(std::string statement, const query_options& options, query_handler&& handler) const;
150
130
 
151
131
  /**
152
132
  * Performs a query against the query (N1QL) services.
@@ -159,19 +139,14 @@ class cluster
159
139
  * @committed
160
140
  */
161
141
  [[nodiscard]] auto query(std::string statement, const query_options& options) const
162
- -> std::future<std::pair<query_error_context, query_result>>
163
- {
164
- auto barrier = std::make_shared<std::promise<std::pair<query_error_context, query_result>>>();
165
- auto future = barrier->get_future();
166
- query(std::move(statement), options, [barrier](auto ctx, auto result) {
167
- barrier->set_value({ std::move(ctx), std::move(result) });
168
- });
169
- return future;
170
- }
142
+ -> std::future<std::pair<query_error_context, query_result>>;
171
143
 
172
144
  /**
173
145
  * Performs a query against the full text search services.
174
146
  *
147
+ * Consider using the newer @ref cluster::search() interface instead, which can be used
148
+ * for both traditional FTS queries, and to perform a @ref vector_search
149
+ *
175
150
  * @param index_name name of the search index
176
151
  * @param query query object, see hierarchy of @ref search_query for more details.
177
152
  * @param options options to customize the query request.
@@ -190,6 +165,9 @@ class cluster
190
165
  /**
191
166
  * Performs a query against the full text search services.
192
167
  *
168
+ * Consider using the newer @ref cluster::search() interface instead, which can be used
169
+ * for both traditional FTS queries, and to perform a vector search.
170
+ *
193
171
  * @param index_name name of the search index
194
172
  * @param query query object, see hierarchy of @ref search_query for more details.
195
173
  * @param options options to customize the query request.
@@ -206,6 +184,47 @@ class cluster
206
184
  [[nodiscard]] auto search_query(std::string index_name, const class search_query& query, const search_options& options = {}) const
207
185
  -> std::future<std::pair<search_error_context, search_result>>;
208
186
 
187
+ /**
188
+ * Performs a request against the full text search services.
189
+ *
190
+ * This can be used to perform a traditional FTS query, and/or a vector search.
191
+ *
192
+ * @param index_name name of the search index
193
+ * @param request request object, see @ref search_request for more details.
194
+ * @param options options to customize the query request.
195
+ * @param handler the handler that implements @ref search_handler
196
+ *
197
+ * @exception errc::common::ambiguous_timeout
198
+ * @exception errc::common::unambiguous_timeout
199
+ *
200
+ * @see https://docs.couchbase.com/server/current/fts/fts-introduction.html
201
+ *
202
+ * @since 1.0.0
203
+ * @volatile
204
+ */
205
+ void search(std::string index_name, search_request request, const search_options& options, search_handler&& handler) const;
206
+
207
+ /**
208
+ * Performs a request against the full text search services.
209
+ *
210
+ * This can be used to perform a traditional FTS query, and/or a vector search.
211
+ *
212
+ * @param index_name name of the search index
213
+ * @param request request object, see @ref search_request for more details.
214
+ * @param options options to customize the query request.
215
+ * @return future object that carries result of the operation
216
+ *
217
+ * @exception errc::common::ambiguous_timeout
218
+ * @exception errc::common::unambiguous_timeout
219
+ *
220
+ * @see https://docs.couchbase.com/server/current/fts/fts-introduction.html
221
+ *
222
+ * @since 1.0.0
223
+ * @volatile
224
+ */
225
+ [[nodiscard]] auto search(std::string index_name, search_request request, const search_options& = {}) const
226
+ -> std::future<std::pair<search_error_context, search_result>>;
227
+
209
228
  /**
210
229
  * Performs a query against the analytics services.
211
230
  *
@@ -238,6 +257,66 @@ class cluster
238
257
  [[nodiscard]] auto analytics_query(std::string statement, const analytics_options& options = {}) const
239
258
  -> std::future<std::pair<analytics_error_context, analytics_result>>;
240
259
 
260
+ /**
261
+ * Performs application-level ping requests against services in the Couchbase cluster.
262
+ *
263
+ * @note This operation performs active I/O against services and endpoints to assess their health. If you do not
264
+ * wish to performs I/O, consider using @ref diagnostics() instead.
265
+ *
266
+ * @param options custom options to change the default behavior.
267
+ * @param handler the handler that implements @ref ping_handler.
268
+ *
269
+ * @since 1.0.0
270
+ * @committed
271
+ */
272
+ void ping(const ping_options& options, ping_handler&& handler) const;
273
+
274
+ /**
275
+ * Performs application-level ping requests against services in the Couchbase cluster.
276
+ *
277
+ * @note This operation performs active I/O against services and endpoints to assess their health. If you do not
278
+ * wish to performs I/O, consider using @ref diagnostics() instead.
279
+ *
280
+ * @param options custom options to change the default behavior.
281
+ * @return future object that carries result of the operation.
282
+ *
283
+ * @since 1.0.0
284
+ * @committed
285
+ */
286
+ [[nodiscard]] auto ping(const ping_options& options = {}) const -> std::future<ping_result>;
287
+
288
+ /**
289
+ * Assembles a diagnostics report on the current state of the cluster from the SDK's point of view.
290
+ *
291
+ * @note This operation does not perform any I/O to produce the report. It will only use the current known state of
292
+ * the cluster to assemble the report So, if for example, no SQL++ queries have been run, the Query service's socket
293
+ * pool might be empty and as a result not show up in the report. If you wish to actively assess the health of the
294
+ * cluster by performing I/O, consider using @ref ping() instead.
295
+ *
296
+ * @param options custom options to change the default behavior.
297
+ * @param handler the handler that implements @ref diagnostics_handler.
298
+ *
299
+ * @since 1.0.0
300
+ * @committed
301
+ */
302
+ void diagnostics(const diagnostics_options& options, diagnostics_handler&& handler) const;
303
+
304
+ /**
305
+ * Assembles a diagnostics report on the current state of the cluster from the SDK's point of view.
306
+ *
307
+ * @note This operation does not perform any I/O to produce the report. It will only use the current known state of
308
+ * the cluster to assemble the report So, if for example, no SQL++ queries have been run, the Query service's socket
309
+ * pool might be empty and as a result not show up in the report. If you wish to actively assess the health of the
310
+ * cluster by performing I/O, consider using @ref ping() instead.
311
+ *
312
+ * @param options custom options to change the default behavior.
313
+ * @return future object that carries result of the operation.
314
+ *
315
+ * @since 1.0.0
316
+ * @committed
317
+ */
318
+ [[nodiscard]] auto diagnostics(const diagnostics_options& options = {}) const -> std::future<diagnostics_result>;
319
+
241
320
  /**
242
321
  * Provides access to the N1QL index management services.
243
322
  *
@@ -246,52 +325,51 @@ class cluster
246
325
  * @since 1.0.0
247
326
  * @committed
248
327
  */
249
- [[nodiscard]] auto query_indexes() const -> query_index_manager
250
- {
251
- return query_index_manager{ core_ };
252
- }
328
+ [[nodiscard]] auto query_indexes() const -> query_index_manager;
253
329
 
254
330
  /**
255
- * Provides access to the bucket management services.
331
+ * Provides access ot the Analytics index management services.
256
332
  *
257
333
  * @return a manager instance
258
334
  *
259
335
  * @since 1.0.0
260
336
  * @committed
261
337
  */
262
- [[nodiscard]] auto buckets() const -> bucket_manager
263
- {
264
- return bucket_manager{ core_ };
265
- }
338
+ [[nodiscard]] auto analytics_indexes() const -> analytics_index_manager;
266
339
 
267
340
  /**
268
- * Provides access to transaction services.
269
- *
270
- * See {@link transactions} for details on using the transactions object.
341
+ * Provides access to the bucket management services.
271
342
  *
272
- * @return an {@link transactions} object
343
+ * @return a manager instance
273
344
  *
274
345
  * @since 1.0.0
275
346
  * @committed
276
347
  */
348
+ [[nodiscard]] auto buckets() const -> bucket_manager;
277
349
 
278
- [[nodiscard]] auto transactions() -> std::shared_ptr<couchbase::transactions::transactions>;
350
+ /**
351
+ * Provides access to search index management services
352
+ *
353
+ * @return a manager instance
354
+ *
355
+ * @since 1.0.0
356
+ * @committed
357
+ */
358
+ [[nodiscard]] auto search_indexes() const -> search_index_manager;
279
359
 
280
360
  /**
281
- * Provide access to core cluster object
361
+ * Provides access to transaction services.
282
362
  *
283
- * This is used internally, during testing, and may be removed as the API evolves.
363
+ * See {@link transactions} for details on using the transactions object.
284
364
  *
285
- * @return pointer to core cluster
286
- * @volatile
365
+ * @return an {@link transactions} object
366
+ *
367
+ * @since 1.0.0
368
+ * @committed
287
369
  */
288
- [[nodiscard]] auto core() -> std::shared_ptr<couchbase::core::cluster>
289
- {
290
- return core_;
291
- }
370
+ [[nodiscard]] auto transactions() const -> std::shared_ptr<couchbase::transactions::transactions>;
292
371
 
293
372
  private:
294
- std::shared_ptr<couchbase::core::cluster> core_{};
295
- std::shared_ptr<couchbase::core::transactions::transactions> transactions_{};
373
+ std::shared_ptr<cluster_impl> impl_{};
296
374
  };
297
375
  } // namespace couchbase
@@ -25,6 +25,7 @@
25
25
  #include <couchbase/metrics_options.hxx>
26
26
  #include <couchbase/network_options.hxx>
27
27
  #include <couchbase/password_authenticator.hxx>
28
+ #include <couchbase/retry_strategy.hxx>
28
29
  #include <couchbase/security_options.hxx>
29
30
  #include <couchbase/timeout_options.hxx>
30
31
  #include <couchbase/tracing_options.hxx>
@@ -312,31 +313,4 @@ class cluster;
312
313
  * @uncommitted
313
314
  */
314
315
  using cluster_connect_handler = std::function<void(cluster, std::error_code)>;
315
-
316
- #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
317
- namespace core
318
- {
319
- class cluster;
320
- }
321
-
322
- namespace core::impl
323
- {
324
-
325
- /**
326
- * @since 1.0.0
327
- * @internal
328
- */
329
- void
330
- initiate_cluster_connect(asio::io_context& io,
331
- const std::string& connection_string,
332
- const couchbase::cluster_options& options,
333
- cluster_connect_handler&& handler);
334
- /**
335
- * @since 1.0.0
336
- * @internal
337
- */
338
- void
339
- initiate_cluster_close(std::shared_ptr<couchbase::core::cluster> core);
340
- #endif
341
- } // namespace core::impl
342
316
  } // namespace couchbase
@@ -40,7 +40,7 @@ class json_transcoder
40
40
  {
41
41
  if (encoded.flags != 0 && !codec_flags::has_common_flags(encoded.flags, codec_flags::json_common_flags)) {
42
42
  throw std::system_error(errc::common::decoding_failure,
43
- "json_transcoder excepts document to have JSON common flags, flags=" + std::to_string(encoded.flags));
43
+ "json_transcoder expects document to have JSON common flags, flags=" + std::to_string(encoded.flags));
44
44
  }
45
45
 
46
46
  return Serializer::template deserialize<Document>(encoded.data);
@@ -21,6 +21,7 @@
21
21
  #include <couchbase/codec/encoded_value.hxx>
22
22
  #include <couchbase/codec/transcoder_traits.hxx>
23
23
  #include <couchbase/error_codes.hxx>
24
+
24
25
  #include <type_traits>
25
26
 
26
27
  namespace couchbase::codec
@@ -40,7 +41,7 @@ class raw_binary_transcoder
40
41
  {
41
42
  if (!codec_flags::has_common_flags(encoded.flags, codec_flags::binary_common_flags)) {
42
43
  throw std::system_error(errc::common::decoding_failure,
43
- "raw_binary_transcoder excepts document to have BINARY common flags, flags=" +
44
+ "raw_binary_transcoder expects document to have BINARY common flags, flags=" +
44
45
  std::to_string(encoded.flags));
45
46
  }
46
47
 
@@ -0,0 +1,78 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2024. Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/codec/codec_flags.hxx>
21
+ #include <couchbase/codec/encoded_value.hxx>
22
+ #include <couchbase/codec/transcoder_traits.hxx>
23
+ #include <couchbase/error_codes.hxx>
24
+
25
+ #include <cstddef>
26
+ #include <string>
27
+ #include <string_view>
28
+ #include <type_traits>
29
+ #include <vector>
30
+
31
+ namespace couchbase
32
+ {
33
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
34
+ namespace core::utils
35
+ {
36
+ std::vector<std::byte>
37
+ to_binary(std::string_view value) noexcept;
38
+ } // namespace core::utils
39
+ #endif
40
+
41
+ namespace codec
42
+ {
43
+ class raw_json_transcoder
44
+ {
45
+ public:
46
+ template<typename Document, std::enable_if_t<std::is_same_v<Document, std::string> || std::is_same_v<Document, binary>, bool> = true>
47
+ static auto encode(const Document& document) -> encoded_value
48
+ {
49
+ if constexpr (std::is_same_v<Document, std::string>) {
50
+ return { core::utils::to_binary(document), codec_flags::json_common_flags };
51
+ } else {
52
+ return { std::move(document), codec_flags::json_common_flags };
53
+ }
54
+ }
55
+
56
+ template<typename Document, std::enable_if_t<std::is_same_v<Document, std::string> || std::is_same_v<Document, binary>, bool> = true>
57
+ static auto decode(const encoded_value& encoded) -> Document
58
+ {
59
+ if (!codec_flags::has_common_flags(encoded.flags, codec_flags::json_common_flags)) {
60
+ throw std::system_error(errc::common::decoding_failure,
61
+ "raw_json_transcoder expects document to have JSON common flags, flags=" +
62
+ std::to_string(encoded.flags));
63
+ }
64
+ if constexpr (std::is_same_v<Document, std::string>) {
65
+ return std::string{ reinterpret_cast<const char*>(encoded.data.data()), encoded.data.size() };
66
+ } else {
67
+ return encoded.data;
68
+ }
69
+ }
70
+ };
71
+
72
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
73
+ template<>
74
+ struct is_transcoder<raw_json_transcoder> : public std::true_type {
75
+ };
76
+ #endif
77
+ } // namespace codec
78
+ } // namespace couchbase
@@ -0,0 +1,72 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2024. Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/codec/codec_flags.hxx>
21
+ #include <couchbase/codec/encoded_value.hxx>
22
+ #include <couchbase/codec/transcoder_traits.hxx>
23
+ #include <couchbase/error_codes.hxx>
24
+
25
+ #include <cstddef>
26
+ #include <string>
27
+ #include <string_view>
28
+ #include <type_traits>
29
+ #include <vector>
30
+
31
+ namespace couchbase
32
+ {
33
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
34
+ namespace core::utils
35
+ {
36
+ std::vector<std::byte>
37
+ to_binary(std::string_view value) noexcept;
38
+ } // namespace core::utils
39
+ #endif
40
+
41
+ namespace codec
42
+ {
43
+ class raw_string_transcoder
44
+ {
45
+ public:
46
+ using document_type = std::string;
47
+
48
+ static auto encode(document_type document) -> encoded_value
49
+ {
50
+ return { core::utils::to_binary(document), codec_flags::string_common_flags };
51
+ }
52
+
53
+ template<typename Document = document_type, std::enable_if_t<std::is_same_v<Document, document_type>, bool> = true>
54
+ static auto decode(const encoded_value& encoded) -> Document
55
+ {
56
+ if (!codec_flags::has_common_flags(encoded.flags, codec_flags::string_common_flags)) {
57
+ throw std::system_error(errc::common::decoding_failure,
58
+ "raw_string_transcoder expects document to have STRING common flags, flags=" +
59
+ std::to_string(encoded.flags));
60
+ }
61
+
62
+ return std::string{ reinterpret_cast<const char*>(encoded.data.data()), encoded.data.size() };
63
+ }
64
+ };
65
+
66
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
67
+ template<>
68
+ struct is_transcoder<raw_string_transcoder> : public std::true_type {
69
+ };
70
+ #endif
71
+ } // namespace codec
72
+ } // namespace couchbase