couchbase 4.6.0 → 4.7.0-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 (320) hide show
  1. package/CMakeLists.txt +2 -1
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +66 -93
  3. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
  4. package/deps/couchbase-cxx-client/CMakeLists.txt +24 -11
  5. package/deps/couchbase-cxx-client/README.md +17 -16
  6. package/deps/couchbase-cxx-client/cmake/APKBUILD.in +17 -1
  7. package/deps/couchbase-cxx-client/cmake/Bundler.cmake +9 -1
  8. package/deps/couchbase-cxx-client/cmake/Cache.cmake +48 -19
  9. package/deps/couchbase-cxx-client/cmake/CompilerOptions.cmake +3 -1
  10. package/deps/couchbase-cxx-client/cmake/OpenSSL.cmake +10 -2
  11. package/deps/couchbase-cxx-client/cmake/Packaging.cmake +48 -8
  12. package/deps/couchbase-cxx-client/cmake/ThirdPartyDependencies.cmake +43 -1
  13. package/deps/couchbase-cxx-client/cmake/build_config.hxx.in +2 -0
  14. package/deps/couchbase-cxx-client/cmake/couchbase-cxx-client.spec.in +18 -0
  15. package/deps/couchbase-cxx-client/cmake/debian/control +6 -1
  16. package/deps/couchbase-cxx-client/cmake/debian/rules +1 -0
  17. package/deps/couchbase-cxx-client/cmake/tarball_glob.txt +10 -0
  18. package/deps/couchbase-cxx-client/core/app_telemetry_meter.cxx +1 -0
  19. package/deps/couchbase-cxx-client/core/app_telemetry_reporter.cxx +45 -43
  20. package/deps/couchbase-cxx-client/core/app_telemetry_reporter.hxx +4 -3
  21. package/deps/couchbase-cxx-client/core/bucket.cxx +128 -13
  22. package/deps/couchbase-cxx-client/core/bucket.hxx +12 -2
  23. package/deps/couchbase-cxx-client/core/cluster.cxx +304 -152
  24. package/deps/couchbase-cxx-client/core/cluster.hxx +32 -0
  25. package/deps/couchbase-cxx-client/core/cluster_credentials.cxx +25 -0
  26. package/deps/couchbase-cxx-client/core/cluster_credentials.hxx +5 -0
  27. package/deps/couchbase-cxx-client/core/cluster_label_listener.cxx +72 -0
  28. package/deps/couchbase-cxx-client/core/cluster_label_listener.hxx +46 -0
  29. package/deps/couchbase-cxx-client/core/cluster_options.hxx +4 -0
  30. package/deps/couchbase-cxx-client/core/deprecation_utils.hxx +26 -0
  31. package/deps/couchbase-cxx-client/core/error.hxx +27 -0
  32. package/deps/couchbase-cxx-client/core/free_form_http_request.hxx +0 -2
  33. package/deps/couchbase-cxx-client/core/http_component.cxx +12 -48
  34. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +3 -2
  35. package/deps/couchbase-cxx-client/core/impl/analytics.hxx +2 -1
  36. package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +249 -137
  37. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +134 -58
  38. package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +87 -35
  39. package/deps/couchbase-cxx-client/core/impl/collection.cxx +560 -245
  40. package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +89 -49
  41. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +4 -4
  42. package/deps/couchbase-cxx-client/core/impl/error.cxx +20 -13
  43. package/deps/couchbase-cxx-client/core/impl/error.hxx +15 -10
  44. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.hxx +1 -1
  45. package/deps/couchbase-cxx-client/core/impl/get_any_replica.hxx +2 -1
  46. package/deps/couchbase-cxx-client/core/impl/get_replica.hxx +2 -0
  47. package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.hxx +1 -1
  48. package/deps/couchbase-cxx-client/core/impl/observability_recorder.cxx +161 -0
  49. package/deps/couchbase-cxx-client/core/impl/observability_recorder.hxx +77 -0
  50. package/deps/couchbase-cxx-client/core/impl/observe_seqno.hxx +2 -0
  51. package/deps/couchbase-cxx-client/core/impl/public_bucket.cxx +31 -7
  52. package/deps/couchbase-cxx-client/core/impl/public_cluster.cxx +107 -19
  53. package/deps/couchbase-cxx-client/core/impl/query.cxx +6 -3
  54. package/deps/couchbase-cxx-client/core/impl/query.hxx +3 -1
  55. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +267 -102
  56. package/deps/couchbase-cxx-client/core/impl/scope.cxx +53 -11
  57. package/deps/couchbase-cxx-client/core/impl/search.cxx +8 -4
  58. package/deps/couchbase-cxx-client/core/impl/search.hxx +6 -2
  59. package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +131 -41
  60. package/deps/couchbase-cxx-client/core/impl/with_cancellation.hxx +75 -0
  61. package/deps/couchbase-cxx-client/core/io/config_tracker.cxx +9 -9
  62. package/deps/couchbase-cxx-client/core/io/config_tracker.hxx +2 -1
  63. package/deps/couchbase-cxx-client/core/io/http_command.hxx +98 -49
  64. package/deps/couchbase-cxx-client/core/io/http_context.hxx +2 -0
  65. package/deps/couchbase-cxx-client/core/io/http_session.cxx +23 -10
  66. package/deps/couchbase-cxx-client/core/io/http_session.hxx +17 -9
  67. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +163 -228
  68. package/deps/couchbase-cxx-client/core/io/http_traits.hxx +0 -7
  69. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +123 -44
  70. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +251 -26
  71. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +9 -1
  72. package/deps/couchbase-cxx-client/core/io/mcbp_traits.hxx +0 -8
  73. package/deps/couchbase-cxx-client/core/io/streams.cxx +3 -3
  74. package/deps/couchbase-cxx-client/core/io/streams.hxx +3 -2
  75. package/deps/couchbase-cxx-client/core/meta/features.hxx +15 -0
  76. package/deps/couchbase-cxx-client/core/meta/version.cxx +13 -0
  77. package/deps/couchbase-cxx-client/core/meta/version.hxx +3 -0
  78. package/deps/couchbase-cxx-client/core/metrics/constants.hxx +23 -0
  79. package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +5 -5
  80. package/deps/couchbase-cxx-client/core/metrics/meter_wrapper.cxx +65 -63
  81. package/deps/couchbase-cxx-client/core/metrics/meter_wrapper.hxx +12 -10
  82. package/deps/couchbase-cxx-client/core/operations/document_analytics.hxx +0 -5
  83. package/deps/couchbase-cxx-client/core/operations/document_append.hxx +0 -4
  84. package/deps/couchbase-cxx-client/core/operations/document_decrement.hxx +0 -5
  85. package/deps/couchbase-cxx-client/core/operations/document_exists.hxx +0 -7
  86. package/deps/couchbase-cxx-client/core/operations/document_get.hxx +0 -7
  87. package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +77 -27
  88. package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.hxx +0 -9
  89. package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.hxx +0 -9
  90. package/deps/couchbase-cxx-client/core/operations/document_get_any_replica.hxx +83 -2
  91. package/deps/couchbase-cxx-client/core/operations/document_get_projected.hxx +0 -9
  92. package/deps/couchbase-cxx-client/core/operations/document_increment.hxx +0 -5
  93. package/deps/couchbase-cxx-client/core/operations/document_insert.hxx +0 -4
  94. package/deps/couchbase-cxx-client/core/operations/document_lookup_in.hxx +0 -9
  95. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +46 -4
  96. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +121 -43
  97. package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +0 -5
  98. package/deps/couchbase-cxx-client/core/operations/document_prepend.hxx +0 -4
  99. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +0 -4
  100. package/deps/couchbase-cxx-client/core/operations/document_remove.hxx +0 -4
  101. package/deps/couchbase-cxx-client/core/operations/document_replace.hxx +0 -4
  102. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +0 -7
  103. package/deps/couchbase-cxx-client/core/operations/document_touch.hxx +0 -7
  104. package/deps/couchbase-cxx-client/core/operations/document_unlock.hxx +0 -6
  105. package/deps/couchbase-cxx-client/core/operations/document_upsert.hxx +0 -4
  106. package/deps/couchbase-cxx-client/core/operations/document_view.cxx +2 -0
  107. package/deps/couchbase-cxx-client/core/operations/document_view.hxx +10 -13
  108. package/deps/couchbase-cxx-client/core/operations/http_noop.hxx +2 -0
  109. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.hxx +2 -0
  110. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.hxx +2 -0
  111. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.hxx +2 -0
  112. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.hxx +2 -0
  113. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.hxx +2 -0
  114. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
  115. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.hxx +2 -0
  116. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.hxx +2 -0
  117. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.hxx +2 -0
  118. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.hxx +2 -0
  119. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.hxx +2 -0
  120. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.hxx +2 -0
  121. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.hxx +2 -0
  122. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.hxx +2 -0
  123. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.hxx +2 -0
  124. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.hxx +2 -0
  125. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.hxx +2 -0
  126. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.hxx +2 -0
  127. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.hxx +2 -0
  128. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.hxx +2 -0
  129. package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.hxx +2 -0
  130. package/deps/couchbase-cxx-client/core/operations/management/bucket_update.hxx +2 -0
  131. package/deps/couchbase-cxx-client/core/operations/management/change_password.hxx +2 -0
  132. package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.hxx +2 -0
  133. package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.hxx +2 -0
  134. package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +2 -0
  135. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.hxx +2 -0
  136. package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +2 -0
  137. package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.hxx +2 -0
  138. package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +4 -1
  139. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.hxx +2 -0
  140. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.hxx +2 -0
  141. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.hxx +2 -0
  142. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.hxx +2 -0
  143. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.hxx +2 -0
  144. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.hxx +2 -0
  145. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.hxx +2 -0
  146. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.hxx +2 -0
  147. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.hxx +2 -0
  148. package/deps/couchbase-cxx-client/core/operations/management/freeform.hxx +2 -0
  149. package/deps/couchbase-cxx-client/core/operations/management/group_drop.hxx +2 -0
  150. package/deps/couchbase-cxx-client/core/operations/management/group_get.hxx +2 -0
  151. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.hxx +2 -0
  152. package/deps/couchbase-cxx-client/core/operations/management/group_upsert.hxx +2 -0
  153. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +2 -0
  154. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +68 -30
  155. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +2 -0
  156. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +2 -0
  157. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +4 -3
  158. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +2 -1
  159. package/deps/couchbase-cxx-client/core/operations/management/role_get_all.hxx +2 -0
  160. package/deps/couchbase-cxx-client/core/operations/management/scope_create.hxx +2 -0
  161. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.hxx +2 -0
  162. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.hxx +2 -0
  163. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +2 -0
  164. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +2 -0
  165. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +2 -0
  166. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +2 -0
  167. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +2 -0
  168. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +2 -0
  169. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +2 -0
  170. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +2 -0
  171. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +2 -0
  172. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.hxx +2 -0
  173. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +2 -0
  174. package/deps/couchbase-cxx-client/core/operations/management/user_drop.hxx +2 -0
  175. package/deps/couchbase-cxx-client/core/operations/management/user_get.hxx +2 -0
  176. package/deps/couchbase-cxx-client/core/operations/management/user_get_all.hxx +2 -0
  177. package/deps/couchbase-cxx-client/core/operations/management/user_upsert.hxx +2 -0
  178. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.hxx +2 -0
  179. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.hxx +2 -0
  180. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.hxx +2 -0
  181. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.hxx +2 -0
  182. package/deps/couchbase-cxx-client/core/operations/operation_traits.hxx +6 -0
  183. package/deps/couchbase-cxx-client/core/operations.hxx +0 -1
  184. package/deps/couchbase-cxx-client/core/operations_fwd.hxx +8 -0
  185. package/deps/couchbase-cxx-client/core/origin.cxx +67 -12
  186. package/deps/couchbase-cxx-client/core/origin.hxx +13 -8
  187. package/deps/couchbase-cxx-client/core/orphan_reporter.cxx +164 -0
  188. package/deps/couchbase-cxx-client/core/orphan_reporter.hxx +65 -0
  189. package/deps/couchbase-cxx-client/core/sasl/CMakeLists.txt +1 -0
  190. package/deps/couchbase-cxx-client/core/sasl/client.cc +6 -0
  191. package/deps/couchbase-cxx-client/core/sasl/mechanism.cc +2 -1
  192. package/deps/couchbase-cxx-client/core/sasl/mechanism.h +2 -1
  193. package/deps/couchbase-cxx-client/core/sasl/oauthbearer/oauthbearer.cc +41 -0
  194. package/deps/couchbase-cxx-client/core/sasl/oauthbearer/oauthbearer.h +47 -0
  195. package/deps/couchbase-cxx-client/core/tls_context_provider.cxx +44 -0
  196. package/deps/couchbase-cxx-client/core/tls_context_provider.hxx +44 -0
  197. package/deps/couchbase-cxx-client/core/tracing/attribute_helpers.hxx +45 -0
  198. package/deps/couchbase-cxx-client/core/tracing/constants.hxx +148 -68
  199. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_options.hxx +0 -3
  200. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +122 -170
  201. package/deps/couchbase-cxx-client/core/tracing/tracer_wrapper.cxx +17 -24
  202. package/deps/couchbase-cxx-client/core/tracing/tracer_wrapper.hxx +8 -10
  203. package/deps/couchbase-cxx-client/core/tracing/wrapper_sdk_tracer.cxx +114 -0
  204. package/deps/couchbase-cxx-client/core/tracing/wrapper_sdk_tracer.hxx +85 -0
  205. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +16 -14
  206. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +4 -4
  207. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +1 -1
  208. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +1 -2
  209. package/deps/couchbase-cxx-client/core/utils/byteswap.hxx +12 -0
  210. package/deps/couchbase-cxx-client/core/utils/concurrent_fixed_priority_queue.hxx +102 -0
  211. package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +2 -0
  212. package/deps/couchbase-cxx-client/couchbase/certificate_authenticator.hxx +1 -0
  213. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +47 -0
  214. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +16 -0
  215. package/deps/couchbase-cxx-client/couchbase/collection.hxx +60 -15
  216. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +48 -48
  217. package/deps/couchbase-cxx-client/couchbase/jwt_authenticator.hxx +52 -0
  218. package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +2 -1
  219. package/deps/couchbase-cxx-client/couchbase/metrics/otel_meter.hxx +75 -80
  220. package/deps/couchbase-cxx-client/couchbase/network_options.hxx +19 -0
  221. package/deps/couchbase-cxx-client/couchbase/password_authenticator.hxx +1 -0
  222. package/deps/couchbase-cxx-client/couchbase/tracing/otel_tracer.hxx +15 -17
  223. package/deps/couchbase-cxx-client/couchbase/tracing/request_span.hxx +2 -2
  224. package/dist/analyticsexecutor.d.ts +15 -0
  225. package/dist/analyticsexecutor.js +79 -50
  226. package/dist/analyticsindexmanager.d.ts +66 -0
  227. package/dist/analyticsindexmanager.js +404 -277
  228. package/dist/analyticstypes.d.ts +5 -0
  229. package/dist/authenticators.d.ts +34 -1
  230. package/dist/authenticators.js +19 -1
  231. package/dist/binarycollection.d.ts +17 -0
  232. package/dist/binding.d.ts +245 -228
  233. package/dist/binding.js +2 -2
  234. package/dist/bindingutilities.js +1 -1
  235. package/dist/bucket.d.ts +8 -0
  236. package/dist/bucket.js +8 -0
  237. package/dist/bucketmanager.d.ts +30 -0
  238. package/dist/bucketmanager.js +128 -69
  239. package/dist/cluster.d.ts +45 -0
  240. package/dist/cluster.js +133 -23
  241. package/dist/collection.d.ts +75 -2
  242. package/dist/collection.js +773 -552
  243. package/dist/collectionmanager.d.ts +34 -0
  244. package/dist/collectionmanager.js +172 -89
  245. package/dist/couchbase.d.ts +5 -0
  246. package/dist/couchbase.js +5 -0
  247. package/dist/datastructures.js +310 -97
  248. package/dist/diagnosticsexecutor.js +1 -1
  249. package/dist/errors.d.ts +8 -0
  250. package/dist/errors.js +12 -1
  251. package/dist/eventingfunctionmanager.d.ts +42 -0
  252. package/dist/eventingfunctionmanager.js +172 -100
  253. package/dist/logger.d.ts +192 -0
  254. package/dist/logger.js +213 -0
  255. package/dist/loggingmeter.d.ts +120 -0
  256. package/dist/loggingmeter.js +226 -0
  257. package/dist/metrics.d.ts +33 -0
  258. package/dist/metrics.js +5 -0
  259. package/dist/observability.d.ts +60 -0
  260. package/dist/observability.js +86 -0
  261. package/dist/observabilityhandler.d.ts +176 -0
  262. package/dist/observabilityhandler.js +733 -0
  263. package/dist/observabilitytypes.d.ts +320 -0
  264. package/dist/observabilitytypes.js +362 -0
  265. package/dist/observabilityutilities.d.ts +60 -0
  266. package/dist/observabilityutilities.js +175 -0
  267. package/dist/otelmeter.d.ts +51 -0
  268. package/dist/otelmeter.js +100 -0
  269. package/dist/oteltracer.d.ts +69 -0
  270. package/dist/oteltracer.js +141 -0
  271. package/dist/queryexecutor.d.ts +16 -0
  272. package/dist/queryexecutor.js +128 -86
  273. package/dist/queryindexmanager.d.ts +29 -0
  274. package/dist/queryindexmanager.js +277 -150
  275. package/dist/querytypes.d.ts +5 -0
  276. package/dist/scope.js +2 -2
  277. package/dist/scopeeventingfunctionmanager.d.ts +5 -0
  278. package/dist/scopeeventingfunctionmanager.js +217 -119
  279. package/dist/scopesearchindexmanager.d.ts +5 -0
  280. package/dist/scopesearchindexmanager.js +295 -166
  281. package/dist/sdspecs.js +6 -1
  282. package/dist/searchexecutor.d.ts +15 -0
  283. package/dist/searchexecutor.js +54 -26
  284. package/dist/searchindexmanager.d.ts +54 -0
  285. package/dist/searchindexmanager.js +235 -142
  286. package/dist/searchtypes.d.ts +5 -0
  287. package/dist/thresholdlogging.d.ts +301 -0
  288. package/dist/thresholdlogging.js +657 -0
  289. package/dist/tracing.d.ts +55 -0
  290. package/dist/tracing.js +2 -0
  291. package/dist/transactions.js +1 -1
  292. package/dist/transcoders.js +1 -1
  293. package/dist/usermanager.d.ts +46 -0
  294. package/dist/usermanager.js +199 -118
  295. package/dist/utilities.d.ts +4 -0
  296. package/dist/utilities.js +11 -1
  297. package/dist/utilities_internal.js +0 -1
  298. package/dist/version.d.ts +2 -0
  299. package/dist/version.js +7 -0
  300. package/dist/viewexecutor.d.ts +15 -0
  301. package/dist/viewexecutor.js +54 -29
  302. package/dist/viewindexmanager.d.ts +30 -0
  303. package/dist/viewindexmanager.js +129 -100
  304. package/dist/viewtypes.d.ts +5 -0
  305. package/package.json +32 -18
  306. package/scripts/buildPrebuild.js +2 -0
  307. package/scripts/install.js +2 -0
  308. package/scripts/prebuilds.js +7 -8
  309. package/scripts/prune.js +2 -0
  310. package/scripts/updateVersion.js +26 -0
  311. package/src/connection.cpp +79 -98
  312. package/src/connection.hpp +46 -38
  313. package/src/connection_autogen.cpp +1236 -292
  314. package/src/jstocbpp_autogen.hpp +1117 -313
  315. package/src/jstocbpp_basic.hpp +73 -0
  316. package/src/jstocbpp_defs.hpp +37 -9
  317. package/src/jstocbpp_errors.hpp +37 -11
  318. package/tools/gen-bindings-js.js +100 -22
  319. package/tools/gen-bindings-json.py +40 -6
  320. package/src/transcoder.hpp +0 -96
package/package.json CHANGED
@@ -20,24 +20,37 @@
20
20
  "license": "Apache-2.0",
21
21
  "name": "couchbase",
22
22
  "dependencies": {
23
- "cmake-js": "^7.3.1",
23
+ "cmake-js": "^8.0.0",
24
+ "detect-libc": "^2.1.2",
25
+ "hdr-histogram-js": "^3.0.1",
24
26
  "node-addon-api": "^8.3.1"
25
27
  },
28
+ "peerDependencies": {
29
+ "@opentelemetry/api": "^1.0.0"
30
+ },
31
+ "peerDependenciesMeta": {
32
+ "@opentelemetry/api": {
33
+ "optional": true
34
+ }
35
+ },
26
36
  "devDependencies": {
37
+ "@eslint/js": "^9.39.2",
38
+ "@opentelemetry/api": "^1.9.0",
27
39
  "@trivago/prettier-plugin-sort-imports": "^5.2.2",
28
40
  "@tsconfig/node12": "^12.1.4",
29
41
  "@types/bindings": "^1.5.5",
30
42
  "@types/debug": "^4.1.12",
31
43
  "@types/node": "^22.14.1",
32
- "@typescript-eslint/eslint-plugin": "^7.13.1",
33
- "@typescript-eslint/parser": "^7.13.1",
44
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
45
+ "@typescript-eslint/parser": "^8.54.0",
34
46
  "chai": "^4.5.0",
35
- "eslint": "^8.57.0",
47
+ "eslint": "^9.39.2",
36
48
  "eslint-config-prettier": "^9.1.0",
37
- "eslint-plugin-jsdoc": "^48.2.12",
49
+ "eslint-plugin-jsdoc": "^50.6.2",
38
50
  "eslint-plugin-mocha": "^10.5.0",
39
- "eslint-plugin-node": "^11.1.0",
51
+ "eslint-plugin-n": "^17.17.0",
40
52
  "expose-gc": "^1.0.0",
53
+ "globals": "^15.14.0",
41
54
  "mocha": "^11.1.0",
42
55
  "npm-check-updates": "^18.0.0",
43
56
  "nyc": "^17.1.0",
@@ -48,13 +61,14 @@
48
61
  "ts-node": "^10.9.2",
49
62
  "typedoc": "^0.28.3",
50
63
  "typescript": "~5.4.5",
64
+ "typescript-eslint": "^8.54.0",
51
65
  "uuid": "^11.1.0"
52
66
  },
53
67
  "repository": {
54
68
  "type": "git",
55
69
  "url": "http://github.com/couchbase/couchnode.git"
56
70
  },
57
- "version": "4.6.0",
71
+ "version": "4.7.0-dev.1",
58
72
  "config": {
59
73
  "native": false
60
74
  },
@@ -63,7 +77,7 @@
63
77
  "build": "cmake-js build && tsc",
64
78
  "rebuild": "cmake-js rebuild && tsc",
65
79
  "prebuild": "node ./scripts/buildPrebuild.js",
66
- "prepare": "tsc",
80
+ "prepare": "node ./scripts/updateVersion.js && tsc",
67
81
  "help-prune": "node ./scripts/prune.js",
68
82
  "build-docs": "typedoc",
69
83
  "test": "ts-mocha test/*.test.*",
@@ -78,15 +92,6 @@
78
92
  6
79
93
  ]
80
94
  },
81
- "optionalDependencies": {
82
- "@couchbase/couchbase-darwin-arm64-napi": "4.6.0",
83
- "@couchbase/couchbase-darwin-x64-napi": "4.6.0",
84
- "@couchbase/couchbase-linux-arm64-napi": "4.6.0",
85
- "@couchbase/couchbase-linuxmusl-arm64-napi": "4.6.0",
86
- "@couchbase/couchbase-linuxmusl-x64-napi": "4.6.0",
87
- "@couchbase/couchbase-linux-x64-napi": "4.6.0",
88
- "@couchbase/couchbase-win32-x64-napi": "4.6.0"
89
- },
90
95
  "files": [
91
96
  "LICENSE",
92
97
  "CMakeLists.txt",
@@ -159,5 +164,14 @@
159
164
  "deps/couchbase-cxx-cache/spdlog/*/spdlog/include/**/*",
160
165
  "deps/couchbase-cxx-cache/spdlog/*/spdlog/src/**/*",
161
166
  "deps/couchbase-cxx-cache/mozilla-ca-bundle.*"
162
- ]
167
+ ],
168
+ "optionalDependencies": {
169
+ "@couchbase/couchbase-darwin-arm64-napi": "4.7.0-dev.1",
170
+ "@couchbase/couchbase-darwin-x64-napi": "4.7.0-dev.1",
171
+ "@couchbase/couchbase-linux-arm64-napi": "4.7.0-dev.1",
172
+ "@couchbase/couchbase-linuxmusl-arm64-napi": "4.7.0-dev.1",
173
+ "@couchbase/couchbase-linuxmusl-x64-napi": "4.7.0-dev.1",
174
+ "@couchbase/couchbase-linux-x64-napi": "4.7.0-dev.1",
175
+ "@couchbase/couchbase-win32-x64-napi": "4.7.0-dev.1"
176
+ }
163
177
  }
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const prebuilds = require('./prebuilds')
2
4
 
3
5
  function buildPrebuild(
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const path = require('path')
2
4
  const prebuilds = require('./prebuilds')
3
5
 
@@ -1,6 +1,9 @@
1
+ 'use strict'
2
+
1
3
  const fs = require('fs')
2
4
  const path = require('path')
3
5
  var proc = require('child_process')
6
+ const { familySync, MUSL } = require('detect-libc')
4
7
 
5
8
  // Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'
6
9
  const runtimeRequire =
@@ -18,15 +21,15 @@ const platform = process.platform
18
21
  const libc = getLinuxType(platform)
19
22
  const sslType = getSSLType(runtime, nodeVersion)
20
23
 
21
- CN_ROOT = path.resolve(path.dirname(__filename), '..')
24
+ const CN_ROOT = path.resolve(path.dirname(__filename), '..')
22
25
  // CN_CXXCBC_CACHE_DIR should only need to be used on Windows when setting the CPM cache (CN_SET_CPM_CACHE=ON).
23
26
  // It helps prevent issues w/ path lengths.
24
27
  // NOTE: Setting the CPM cache on a Windows machine should be a _rare_ occasion. When doing so and setting
25
28
  // CN_CXXCBC_CACHE_DIR, be sure to copy the cache to <root source dir>\deps\couchbase-cxx-cache if building a sdist.
26
- CXXCBC_CACHE_DIR =
29
+ const CXXCBC_CACHE_DIR =
27
30
  process.env.CN_CXXCBC_CACHE_DIR ||
28
31
  path.join(CN_ROOT, 'deps', 'couchbase-cxx-cache')
29
- ENV_TRUE = ['true', '1', 'y', 'yes', 'on']
32
+ const ENV_TRUE = ['true', '1', 'y', 'yes', 'on']
30
33
 
31
34
  function buildBinary(
32
35
  runtime,
@@ -274,7 +277,7 @@ function getLinuxType(platform) {
274
277
  if (platform !== 'linux') {
275
278
  return ''
276
279
  }
277
- return `linux${isAlpine(platform) ? 'musl' : ''}`
280
+ return `linux${familySync() === MUSL ? 'musl' : ''}`
278
281
  }
279
282
 
280
283
  function getNodeMajorVersion(version) {
@@ -344,10 +347,6 @@ function getSupportedPlatformPackages(packageName) {
344
347
  return packageNames
345
348
  }
346
349
 
347
- function isAlpine(platform) {
348
- return platform === 'linux' && fs.existsSync('/etc/alpine-release')
349
- }
350
-
351
350
  function isElectron() {
352
351
  if (process.versions && process.versions.electron) return true
353
352
  if (process.env.ELECTRON_RUN_AS_NODE) return true
package/scripts/prune.js CHANGED
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const fs = require('fs')
2
4
  const path = require('path')
3
5
  const prebuilds = require('./prebuilds')
@@ -0,0 +1,26 @@
1
+ 'use strict'
2
+
3
+ const fs = require('fs')
4
+ const path = require('path')
5
+
6
+ // 1. Define the paths relative to this script
7
+ const packageJsonPath = path.join(__dirname, '../package.json')
8
+ const versionTsPath = path.join(__dirname, '../lib/version.ts')
9
+
10
+ // 2. Read and parse package.json
11
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
12
+ const version = packageJson.version;
13
+ const name = packageJson.name;
14
+
15
+ // 3. Generate the TypeScript content
16
+ const tsContent = `// This file is auto-generated by scripts/updateVersion.js during the build process.
17
+ // DO NOT EDIT DIRECTLY.
18
+
19
+ export const SDK_VERSION = '${version}';
20
+ export const SDK_NAME = '${name}';
21
+ `;
22
+
23
+ // 4. Write it to the lib directory
24
+ fs.writeFileSync(versionTsPath, tsContent, 'utf8');
25
+
26
+ console.log(`[Build] Wrote ${name} v${version} to lib/version.ts`);
@@ -4,8 +4,9 @@
4
4
  #include "jstocbpp.hpp"
5
5
  #include "mutationtoken.hpp"
6
6
  #include "scan_iterator.hpp"
7
- #include "transcoder.hpp"
8
7
  #include <core/agent_group.hxx>
8
+ #include <core/cluster.hxx>
9
+ #include <core/cluster_label_listener.hxx>
9
10
  #include <core/operations/management/freeform.hxx>
10
11
  #include <core/range_scan_orchestrator.hxx>
11
12
  #include <core/utils/connection_string.hxx>
@@ -35,11 +36,14 @@ void Connection::Init(Napi::Env env, Napi::Object exports)
35
36
  env, "Connection",
36
37
  {
37
38
  InstanceMethod<&Connection::jsConnect>("connect"),
39
+ InstanceMethod<&Connection::jsUpdateCredentials>(
40
+ "updateCredentials"),
38
41
  InstanceMethod<&Connection::jsShutdown>("shutdown"),
39
42
  InstanceMethod<&Connection::jsOpenBucket>("openBucket"),
40
43
  InstanceMethod<&Connection::jsDiagnostics>("diagnostics"),
41
44
  InstanceMethod<&Connection::jsPing>("ping"),
42
45
  InstanceMethod<&Connection::jsScan>("scan"),
46
+ InstanceMethod<&Connection::jsGetClusterLabels>("getClusterLabels"),
43
47
 
44
48
  //#region Autogenerated Method Registration
45
49
 
@@ -279,7 +283,7 @@ Napi::Value Connection::jsConnect(const Napi::CallbackInfo &info)
279
283
  {
280
284
  auto connstr = info[0].ToString().Utf8Value();
281
285
  auto credentialsJsObj = info[1].As<Napi::Object>();
282
- auto callbackJsFn = info[7].As<Napi::Function>();
286
+ auto callbackJsFn = info[6].As<Napi::Function>();
283
287
 
284
288
  auto connstrInfo = couchbase::core::utils::parse_connection_string(connstr);
285
289
  auto creds =
@@ -343,121 +347,51 @@ Napi::Value Connection::jsConnect(const Napi::CallbackInfo &info)
343
347
  }
344
348
  }
345
349
 
346
- couchbase::core::tracing::threshold_logging_options tracing_options{};
347
- bool has_tracing_options = false;
348
-
349
- if (!info[4].IsNull()) {
350
- auto jsTracingConfigObj = info[4].As<Napi::Object>();
351
- auto jsEnableTracing = jsTracingConfigObj.Get("enableTracing");
352
- if (!(jsEnableTracing.IsNull() || jsEnableTracing.IsUndefined())) {
353
- connstrInfo.options.enable_tracing =
354
- js_to_cbpp<bool>(jsEnableTracing);
355
- }
356
- auto jsEmitInterval = jsTracingConfigObj.Get("emitInterval");
357
- if (!(jsEmitInterval.IsNull() || jsEmitInterval.IsUndefined())) {
358
- tracing_options.threshold_emit_interval =
359
- js_to_cbpp<std::chrono::milliseconds>(jsEmitInterval);
360
- has_tracing_options = true;
361
- }
362
- auto jsSampleSize = jsTracingConfigObj.Get("sampleSize");
363
- if (!(jsSampleSize.IsNull() || jsSampleSize.IsUndefined())) {
364
- tracing_options.threshold_sample_size =
365
- js_to_cbpp<std::size_t>(jsSampleSize);
366
- has_tracing_options = true;
367
- }
368
- auto jsKvThreshold = jsTracingConfigObj.Get("kvThreshold");
369
- if (!(jsKvThreshold.IsNull() || jsKvThreshold.IsUndefined())) {
370
- tracing_options.key_value_threshold =
371
- js_to_cbpp<std::chrono::milliseconds>(jsKvThreshold);
372
- has_tracing_options = true;
373
- }
374
- auto jsQueryThreshold = jsTracingConfigObj.Get("queryThreshold");
375
- if (!(jsQueryThreshold.IsNull() || jsQueryThreshold.IsUndefined())) {
376
- tracing_options.query_threshold =
377
- js_to_cbpp<std::chrono::milliseconds>(jsQueryThreshold);
378
- has_tracing_options = true;
379
- }
380
- auto jsSearchThreshold = jsTracingConfigObj.Get("searchThreshold");
381
- if (!(jsSearchThreshold.IsNull() || jsSearchThreshold.IsUndefined())) {
382
- tracing_options.search_threshold =
383
- js_to_cbpp<std::chrono::milliseconds>(jsSearchThreshold);
384
- has_tracing_options = true;
385
- }
386
- auto jsAnalyticsThreshold =
387
- jsTracingConfigObj.Get("analyticsThreshold");
388
- if (!(jsAnalyticsThreshold.IsNull() ||
389
- jsAnalyticsThreshold.IsUndefined())) {
390
- tracing_options.analytics_threshold =
391
- js_to_cbpp<std::chrono::milliseconds>(jsAnalyticsThreshold);
392
- has_tracing_options = true;
393
- }
394
- auto jsManagementThreshold =
395
- jsTracingConfigObj.Get("managementThreshold");
396
- if (!(jsManagementThreshold.IsNull() ||
397
- jsManagementThreshold.IsUndefined())) {
398
- tracing_options.management_threshold =
399
- js_to_cbpp<std::chrono::milliseconds>(jsManagementThreshold);
400
- has_tracing_options = true;
401
- }
402
- auto jsEventingThreshold = jsTracingConfigObj.Get("eventingThreshold");
403
- if (!(jsEventingThreshold.IsNull() ||
404
- jsEventingThreshold.IsUndefined())) {
405
- tracing_options.eventing_threshold =
406
- js_to_cbpp<std::chrono::milliseconds>(jsEventingThreshold);
407
- has_tracing_options = true;
408
- }
409
- auto jsViewsThreshold = jsTracingConfigObj.Get("viewsThreshold");
410
- if (!(jsViewsThreshold.IsNull() || jsViewsThreshold.IsUndefined())) {
411
- tracing_options.view_threshold =
412
- js_to_cbpp<std::chrono::milliseconds>(jsViewsThreshold);
413
- has_tracing_options = true;
414
- }
350
+ // Always disable tracing, this will be ignored if we set the tracer
351
+ connstrInfo.options.enable_tracing = false;
352
+ auto setup_sdk_tracing = info[4].ToBoolean().Value();
353
+ if (setup_sdk_tracing) {
354
+ connstrInfo.options.tracer =
355
+ std::make_shared<couchbase::core::tracing::wrapper_sdk_tracer>();
415
356
  }
357
+ // For now, always disable metrics in the core
358
+ connstrInfo.options.enable_metrics = false;
416
359
 
417
360
  if (!info[5].IsNull()) {
361
+ couchbase::core::orphan_reporter_options orphan_options{};
362
+ bool has_orphan_options = false;
418
363
  auto jsOrphanReporterConfigObj = info[5].As<Napi::Object>();
419
- // TODO(JSCBC-1364): Migrate to orphan reporting config when available in C++ core
364
+ auto jsEnableOrphanReporting =
365
+ jsOrphanReporterConfigObj.Get("enableOrphanReporting");
366
+ if (!(jsEnableOrphanReporting.IsNull() ||
367
+ jsEnableOrphanReporting.IsUndefined())) {
368
+ connstrInfo.options.enable_orphan_reporting =
369
+ js_to_cbpp<bool>(jsEnableOrphanReporting);
370
+ }
420
371
  auto jsOrphanEmitInterval =
421
372
  jsOrphanReporterConfigObj.Get("emitInterval");
422
373
  if (!(jsOrphanEmitInterval.IsNull() ||
423
374
  jsOrphanEmitInterval.IsUndefined())) {
424
- tracing_options.orphaned_emit_interval =
375
+ orphan_options.emit_interval =
425
376
  js_to_cbpp<std::chrono::milliseconds>(jsOrphanEmitInterval);
426
- has_tracing_options = true;
377
+ has_orphan_options = true;
427
378
  }
428
379
  auto jsOrphanSampleSize = jsOrphanReporterConfigObj.Get("sampleSize");
429
380
  if (!(jsOrphanSampleSize.IsNull() ||
430
381
  jsOrphanSampleSize.IsUndefined())) {
431
- tracing_options.orphaned_sample_size =
382
+ orphan_options.sample_size =
432
383
  js_to_cbpp<std::size_t>(jsOrphanSampleSize);
433
- has_tracing_options = true;
384
+ has_orphan_options = true;
434
385
  }
435
- }
436
386
 
437
- if (has_tracing_options) {
438
- connstrInfo.options.tracing_options = tracing_options;
439
- }
440
-
441
- if (!info[6].IsNull()) {
442
- auto jsMetricsConfigObj = info[6].As<Napi::Object>();
443
- auto jsEnableMetrics = jsMetricsConfigObj.Get("enableMetrics");
444
- if (!(jsEnableMetrics.IsNull() || jsEnableMetrics.IsUndefined())) {
445
- connstrInfo.options.enable_metrics =
446
- js_to_cbpp<bool>(jsEnableMetrics);
447
- }
448
-
449
- auto jsEmitInterval = jsMetricsConfigObj.Get("emitInterval");
450
- if (!(jsEmitInterval.IsNull() || jsEmitInterval.IsUndefined())) {
451
- couchbase::core::metrics::logging_meter_options logging_options{};
452
- logging_options.emit_interval =
453
- js_to_cbpp<std::chrono::milliseconds>(jsEmitInterval);
454
- connstrInfo.options.metrics_options = logging_options;
387
+ if (has_orphan_options) {
388
+ connstrInfo.options.orphan_options = orphan_options;
455
389
  }
456
390
  }
457
391
 
458
392
  auto cookie = CallCookie(info.Env(), callbackJsFn, "cbConnectCallback");
459
393
  this->_instance->_cluster.open(
460
- couchbase::core::origin(creds, connstrInfo),
394
+ couchbase::core::origin(std::move(creds), std::move(connstrInfo)),
461
395
  [cookie = std::move(cookie)](std::error_code ec) mutable {
462
396
  cookie.invoke([ec](Napi::Env env, Napi::Function callback) {
463
397
  callback.Call({cbpp_to_js(env, ec)});
@@ -467,6 +401,18 @@ Napi::Value Connection::jsConnect(const Napi::CallbackInfo &info)
467
401
  return info.Env().Null();
468
402
  }
469
403
 
404
+ Napi::Value Connection::jsUpdateCredentials(const Napi::CallbackInfo &info)
405
+ {
406
+ auto credentialsJsObj = info[0].As<Napi::Object>();
407
+ auto creds =
408
+ jsToCbpp<couchbase::core::cluster_credentials>(credentialsJsObj);
409
+ auto err = this->_instance->_cluster.update_credentials(std::move(creds));
410
+ if (err.ec) {
411
+ return cbpp_to_js(info.Env(), err.ec);
412
+ }
413
+ return info.Env().Null();
414
+ }
415
+
470
416
  Napi::Value Connection::jsShutdown(const Napi::CallbackInfo &info)
471
417
  {
472
418
  auto callbackJsFn = info[0].As<Napi::Function>();
@@ -606,8 +552,15 @@ Napi::Value Connection::jsScan(const Napi::CallbackInfo &info)
606
552
  couchbase::core::agent_group_config{{this->_instance->_cluster}});
607
553
  agentGroup.open_bucket(bucketName);
608
554
  auto agent = agentGroup.get_agent(bucketName);
609
- auto options = js_to_cbpp<couchbase::core::range_scan_orchestrator_options>(
610
- optionsObj);
555
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span> wrapper_span;
556
+ auto span_name = jsToCbpp<std::string>(optionsObj.Get("wrapper_span_name"));
557
+ if (!span_name.empty()) {
558
+ wrapper_span =
559
+ std::make_shared<couchbase::core::tracing::wrapper_sdk_span>(
560
+ span_name);
561
+ }
562
+ auto options = jsToCbpp<couchbase::core::range_scan_orchestrator_options>(
563
+ optionsObj, wrapper_span);
611
564
 
612
565
  if (!agent.has_value()) {
613
566
  resObj.Set("cppErr", cbpp_to_js(env, agent.error()));
@@ -645,4 +598,32 @@ Napi::Value Connection::jsScan(const Napi::CallbackInfo &info)
645
598
  return resObj;
646
599
  }
647
600
 
601
+ std::pair<std::optional<std::string>, std::optional<std::string>>
602
+ Connection::getClusterLabels()
603
+ {
604
+ auto labels = std::make_pair(std::optional<std::string>{},
605
+ std::optional<std::string>{});
606
+ auto cppLabels =
607
+ this->_instance->_cluster.cluster_label_listener()->cluster_labels();
608
+ if (cppLabels.cluster_name.has_value()) {
609
+ labels.first = cppLabels.cluster_name.value();
610
+ }
611
+ if (cppLabels.cluster_uuid.has_value()) {
612
+ labels.second = cppLabels.cluster_uuid.value();
613
+ }
614
+ return labels;
615
+ }
616
+
617
+ Napi::Value Connection::jsGetClusterLabels(const Napi::CallbackInfo &info)
618
+ {
619
+ auto env = info.Env();
620
+ auto resObj = Napi::Object::New(env);
621
+ auto clusterLabels = this->getClusterLabels();
622
+ resObj.Set("clusterName", cbpp_to_js<std::optional<std::string>>(
623
+ env, clusterLabels.first));
624
+ resObj.Set("clusterUUID", cbpp_to_js<std::optional<std::string>>(
625
+ env, clusterLabels.second));
626
+ return resObj;
627
+ }
628
+
648
629
  } // namespace couchnode
@@ -2,7 +2,7 @@
2
2
  #include "addondata.hpp"
3
3
  #include "instance.hpp"
4
4
  #include "jstocbpp.hpp"
5
- #include "transcoder.hpp"
5
+ #include <core/tracing/wrapper_sdk_tracer.hxx>
6
6
  #include <core/utils/movable_function.hxx>
7
7
  #include <napi.h>
8
8
 
@@ -64,12 +64,17 @@ public:
64
64
  return _instance->_cluster;
65
65
  }
66
66
 
67
+ std::pair<std::optional<std::string>, std::optional<std::string>>
68
+ getClusterLabels();
69
+
67
70
  Napi::Value jsConnect(const Napi::CallbackInfo &info);
68
71
  Napi::Value jsShutdown(const Napi::CallbackInfo &info);
72
+ Napi::Value jsUpdateCredentials(const Napi::CallbackInfo &info);
69
73
  Napi::Value jsOpenBucket(const Napi::CallbackInfo &info);
70
74
  Napi::Value jsDiagnostics(const Napi::CallbackInfo &info);
71
75
  Napi::Value jsPing(const Napi::CallbackInfo &info);
72
76
  Napi::Value jsScan(const Napi::CallbackInfo &info);
77
+ Napi::Value jsGetClusterLabels(const Napi::CallbackInfo &info);
73
78
 
74
79
  //#region Autogenerated Method Declarations
75
80
 
@@ -240,45 +245,48 @@ private:
240
245
 
241
246
  template <typename Request>
242
247
  void executeOp(const std::string &opName, const Request &req,
243
- Napi::Function jsCallback)
244
- {
245
- using response_type = typename Request::response_type;
246
- executeOp(opName, req, jsCallback,
247
- [](Napi::Env env, Napi::Function callback,
248
- response_type resp) mutable {
249
- Napi::Value jsErr, jsRes;
250
- try {
251
- jsErr = cbpp_to_js(env, resp.ctx);
252
- jsRes = cbpp_to_js(env, resp);
253
- } catch (const Napi::Error &e) {
254
- jsErr = e.Value();
255
- jsRes = env.Null();
256
- }
257
-
258
- callback.Call({jsErr, jsRes});
259
- });
260
- }
261
-
262
- template <typename Request>
263
- void executeOp(const std::string &opName, const Request &req,
264
- Napi::Function jsCallback, Transcoder &&transcoder)
248
+ Napi::Function jsCallback,
249
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>
250
+ wrapperSpan = nullptr)
265
251
  {
266
252
  using response_type = typename Request::response_type;
267
- executeOp(opName, req, jsCallback,
268
- [transcoder = std::move(transcoder)](
269
- Napi::Env env, Napi::Function callback,
270
- response_type resp) mutable {
271
- Napi::Value jsErr, jsRes;
272
- try {
273
- jsErr = cbpp_to_js(env, resp.ctx);
274
- jsRes = cbpp_to_js(env, resp, transcoder);
275
- } catch (const Napi::Error &e) {
276
- jsErr = e.Value();
277
- jsRes = env.Null();
278
- }
279
-
280
- callback.Call({jsErr, jsRes});
281
- });
253
+ auto clusterLabels = wrapperSpan != nullptr
254
+ ? this->getClusterLabels()
255
+ : std::make_pair(std::optional<std::string>{},
256
+ std::optional<std::string>{});
257
+ executeOp(
258
+ opName, req, jsCallback,
259
+ [wrapperSpan, clusterLabels = std::move(clusterLabels)](
260
+ Napi::Env env, Napi::Function callback,
261
+ response_type resp) mutable {
262
+ Napi::Value jsErr, jsRes;
263
+ try {
264
+ if (auto retries = get_cbpp_retries(resp.ctx);
265
+ retries > 0 && wrapperSpan) {
266
+ wrapperSpan->add_tag("retries", retries);
267
+ }
268
+ if (wrapperSpan) {
269
+ if (clusterLabels.first.has_value()) {
270
+ wrapperSpan->add_tag("cluster_name",
271
+ clusterLabels.first.value());
272
+ }
273
+ if (clusterLabels.second.has_value()) {
274
+ wrapperSpan->add_tag("cluster_uuid",
275
+ clusterLabels.second.value());
276
+ }
277
+ }
278
+ jsErr = cbpp_to_js(env, resp.ctx, wrapperSpan);
279
+ jsRes = cbpp_to_js(env, resp, wrapperSpan);
280
+ } catch (const Napi::Error &e) {
281
+ Napi::Value err = e.Value();
282
+ Napi::Object errObj = err.As<Napi::Object>();
283
+ errObj.Set("cpp_core_span",
284
+ cbpp_wrapper_span_to_js(env, wrapperSpan));
285
+ jsErr = errObj;
286
+ jsRes = env.Null();
287
+ }
288
+ callback.Call({jsErr, jsRes});
289
+ });
282
290
  }
283
291
 
284
292
  Instance *_instance;