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
@@ -0,0 +1,60 @@
1
+ import { AnalyticsQueryOptions } from './analyticstypes';
2
+ import { CppDocumentId, CppDurabilityLevel, HiResTime } from './binding';
3
+ import { AttributeValue, HttpOpType, KeyValueOp, TimeInput } from './observabilitytypes';
4
+ import { QueryOptions } from './querytypes';
5
+ /**
6
+ * @internal
7
+ */
8
+ export type StreamingOptions = AnalyticsQueryOptions | QueryOptions;
9
+ /**
10
+ * Generates an absolute Unix epoch time with nanosecond precision.
11
+ * @internal
12
+ */
13
+ export declare function getEpochHiResTime(): [number, number];
14
+ /**
15
+ * @internal
16
+ */
17
+ export declare function hiResTimeToMicros(hrTime: HiResTime): number;
18
+ /**
19
+ * @internal
20
+ */
21
+ export declare function getHiResTimeDelta(start: HiResTime, end: HiResTime): HiResTime;
22
+ /**
23
+ * @internal
24
+ */
25
+ export declare function millisToHiResTime(millis: number): HiResTime;
26
+ /**
27
+ * @internal
28
+ */
29
+ export declare function getLatestTime(timeA: HiResTime, timeB: HiResTime): HiResTime;
30
+ /**
31
+ * @internal
32
+ */
33
+ export declare function getCoreSpanEndTime(coreSpanEndTime: HiResTime): HiResTime;
34
+ /**
35
+ * @internal
36
+ */
37
+ export declare function timeInputToHiResTime(input?: TimeInput): HiResTime;
38
+ /**
39
+ * @internal
40
+ */
41
+ export declare function getAttributesForKeyValueOpType(opType: KeyValueOp, cppDocId: CppDocumentId, durability?: CppDurabilityLevel): {
42
+ [key: string]: AttributeValue;
43
+ };
44
+ /**
45
+ * @internal
46
+ */
47
+ export interface HttpOpAttributesOptions {
48
+ statement?: string;
49
+ queryOptions?: StreamingOptions;
50
+ queryContext?: string;
51
+ bucketName?: string;
52
+ scopeName?: string;
53
+ collectionName?: string;
54
+ }
55
+ /**
56
+ * @internal
57
+ */
58
+ export declare function getAttributesForHttpOpType(opType: HttpOpType, options?: HttpOpAttributesOptions): {
59
+ [key: string]: AttributeValue;
60
+ };
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getAttributesForHttpOpType = exports.getAttributesForKeyValueOpType = exports.timeInputToHiResTime = exports.getCoreSpanEndTime = exports.getLatestTime = exports.millisToHiResTime = exports.getHiResTimeDelta = exports.hiResTimeToMicros = exports.getEpochHiResTime = void 0;
7
+ const binding_1 = __importDefault(require("./binding"));
8
+ const observabilitytypes_1 = require("./observabilitytypes");
9
+ // Define standard time constants
10
+ const MILLIS_PER_SECOND = 1000;
11
+ const NANOS_PER_SECOND = 1000000000;
12
+ const MICROS_PER_SECOND = 1000000;
13
+ const NANOS_PER_MILLI = 1000000;
14
+ // Take a snapshot the moment the SDK loads
15
+ const TIME_ORIGIN_MS = Date.now();
16
+ const HRTIME_ORIGIN = process.hrtime();
17
+ // Convert the absolute origin into [seconds, nanoseconds]
18
+ const ORIGIN_SECONDS = Math.floor(TIME_ORIGIN_MS / MILLIS_PER_SECOND);
19
+ const ORIGIN_NANOS = (TIME_ORIGIN_MS % MILLIS_PER_SECOND) * NANOS_PER_MILLI;
20
+ /**
21
+ * Generates an absolute Unix epoch time with nanosecond precision.
22
+ * @internal
23
+ */
24
+ function getEpochHiResTime() {
25
+ // Get the current monotonic time
26
+ const nowHrTime = process.hrtime();
27
+ // Calculate exactly how much time has passed since our anchor snapshot
28
+ const [deltaSeconds, deltaNanos] = getHiResTimeDelta(HRTIME_ORIGIN, nowHrTime);
29
+ // Add the high-res delta to our absolute epoch anchor
30
+ let epochSeconds = ORIGIN_SECONDS + deltaSeconds;
31
+ let epochNanos = ORIGIN_NANOS + deltaNanos;
32
+ // Handle nanosecond overflow (if nanos exceed 1 second, carry it over)
33
+ if (epochNanos >= NANOS_PER_SECOND) {
34
+ epochSeconds += 1;
35
+ epochNanos -= NANOS_PER_SECOND;
36
+ }
37
+ return [epochSeconds, epochNanos];
38
+ }
39
+ exports.getEpochHiResTime = getEpochHiResTime;
40
+ /**
41
+ * @internal
42
+ */
43
+ function hiResTimeToMicros(hrTime) {
44
+ return hrTime[0] * MICROS_PER_SECOND + hrTime[1] / MILLIS_PER_SECOND;
45
+ }
46
+ exports.hiResTimeToMicros = hiResTimeToMicros;
47
+ /**
48
+ * @internal
49
+ */
50
+ function getHiResTimeDelta(start, end) {
51
+ let seconds = end[0] - start[0];
52
+ let nanoseconds = end[1] - start[1];
53
+ // Handle nanosecond underflow
54
+ if (nanoseconds < 0) {
55
+ seconds -= 1;
56
+ nanoseconds += NANOS_PER_SECOND;
57
+ }
58
+ return [seconds, nanoseconds];
59
+ }
60
+ exports.getHiResTimeDelta = getHiResTimeDelta;
61
+ /**
62
+ * @internal
63
+ */
64
+ function millisToHiResTime(millis) {
65
+ const seconds = Math.floor(millis / MILLIS_PER_SECOND);
66
+ const remainingMillis = millis - seconds * MILLIS_PER_SECOND;
67
+ const nanoseconds = remainingMillis * MICROS_PER_SECOND;
68
+ return [seconds, nanoseconds];
69
+ }
70
+ exports.millisToHiResTime = millisToHiResTime;
71
+ /**
72
+ * @internal
73
+ */
74
+ function getLatestTime(timeA, timeB) {
75
+ // first compare seconds
76
+ if (timeA[0] > timeB[0]) {
77
+ return timeA;
78
+ }
79
+ if (timeA[0] < timeB[0]) {
80
+ return timeB;
81
+ }
82
+ // If seconds are exactly the same, compare the nanoseconds
83
+ if (timeA[1] >= timeB[1]) {
84
+ return timeA;
85
+ }
86
+ return timeB;
87
+ }
88
+ exports.getLatestTime = getLatestTime;
89
+ /**
90
+ * @internal
91
+ */
92
+ function getCoreSpanEndTime(coreSpanEndTime) {
93
+ // Mitigate Node.js vs C++ clock skew. A parent span must fully encapsulate
94
+ // its children, so we ensure the parent ends at or after the core child's end time.
95
+ const currentTime = timeInputToHiResTime();
96
+ return getLatestTime(currentTime, coreSpanEndTime);
97
+ }
98
+ exports.getCoreSpanEndTime = getCoreSpanEndTime;
99
+ /**
100
+ * @internal
101
+ */
102
+ function timeInputToHiResTime(input) {
103
+ if (typeof input === 'undefined') {
104
+ return getEpochHiResTime();
105
+ }
106
+ // If a Date object is provided, extract the epoch milliseconds
107
+ if (input instanceof Date) {
108
+ return millisToHiResTime(input.getTime());
109
+ }
110
+ // If a number is provided, assume it is epoch milliseconds
111
+ if (typeof input === 'number') {
112
+ return millisToHiResTime(input);
113
+ }
114
+ return input;
115
+ }
116
+ exports.timeInputToHiResTime = timeInputToHiResTime;
117
+ /**
118
+ * @internal
119
+ */
120
+ function getAttributesForKeyValueOpType(opType, cppDocId, durability) {
121
+ const attributes = {
122
+ [observabilitytypes_1.OpAttributeName.SystemName]: 'couchbase',
123
+ [observabilitytypes_1.OpAttributeName.Service]: (0, observabilitytypes_1.serviceNameFromOpType)(opType),
124
+ [observabilitytypes_1.OpAttributeName.OperationName]: opType,
125
+ [observabilitytypes_1.OpAttributeName.BucketName]: cppDocId.bucket,
126
+ [observabilitytypes_1.OpAttributeName.ScopeName]: cppDocId.scope,
127
+ [observabilitytypes_1.OpAttributeName.CollectionName]: cppDocId.collection,
128
+ };
129
+ if (durability && durability != binding_1.default.durability_level.none) {
130
+ if (durability === binding_1.default.durability_level.majority) {
131
+ attributes[observabilitytypes_1.OpAttributeName.DurabilityLevel] = 'majority';
132
+ }
133
+ else if (durability === binding_1.default.durability_level.majority_and_persist_to_active) {
134
+ attributes[observabilitytypes_1.OpAttributeName.DurabilityLevel] =
135
+ 'majority_and_persist_to_active';
136
+ }
137
+ else if (durability === binding_1.default.durability_level.persist_to_majority) {
138
+ attributes[observabilitytypes_1.OpAttributeName.DurabilityLevel] = 'persist_to_majority';
139
+ }
140
+ }
141
+ return attributes;
142
+ }
143
+ exports.getAttributesForKeyValueOpType = getAttributesForKeyValueOpType;
144
+ /**
145
+ * @internal
146
+ */
147
+ function getAttributesForHttpOpType(opType, options) {
148
+ var _a;
149
+ const attributes = {
150
+ [observabilitytypes_1.OpAttributeName.SystemName]: 'couchbase',
151
+ [observabilitytypes_1.OpAttributeName.Service]: (0, observabilitytypes_1.serviceNameFromOpType)(opType),
152
+ [observabilitytypes_1.OpAttributeName.OperationName]: opType,
153
+ };
154
+ if (((_a = options === null || options === void 0 ? void 0 : options.queryOptions) === null || _a === void 0 ? void 0 : _a.parameters) && options.statement) {
155
+ attributes[observabilitytypes_1.OpAttributeName.QueryStatement] = options.statement;
156
+ }
157
+ if (options === null || options === void 0 ? void 0 : options.bucketName) {
158
+ attributes[observabilitytypes_1.OpAttributeName.BucketName] = options.bucketName;
159
+ }
160
+ if (options === null || options === void 0 ? void 0 : options.scopeName) {
161
+ attributes[observabilitytypes_1.OpAttributeName.ScopeName] = options.scopeName;
162
+ }
163
+ if (options === null || options === void 0 ? void 0 : options.collectionName) {
164
+ attributes[observabilitytypes_1.OpAttributeName.CollectionName] = options.collectionName;
165
+ }
166
+ if (options === null || options === void 0 ? void 0 : options.queryContext) {
167
+ const [bucketName, scopeName] = options.queryContext
168
+ .split('.')
169
+ .map((str) => str.replace(/`/g, ''));
170
+ attributes[observabilitytypes_1.OpAttributeName.BucketName] = bucketName;
171
+ attributes[observabilitytypes_1.OpAttributeName.ScopeName] = scopeName;
172
+ }
173
+ return attributes;
174
+ }
175
+ exports.getAttributesForHttpOpType = getAttributesForHttpOpType;
@@ -0,0 +1,51 @@
1
+ import { Meter, ValueRecorder } from './metrics';
2
+ import type { Histogram as OTelHistogram, Meter as OTelMeter, MeterProvider as OTelMeterProvider } from '@opentelemetry/api';
3
+ /**
4
+ * Wrapper class for OpenTelemetry Histogram that implements ValueRecorder interface.
5
+ */
6
+ export declare class OTelValueRecorder implements ValueRecorder {
7
+ private _histogram;
8
+ private _tags;
9
+ private _unit?;
10
+ /**
11
+ * Creates an instance of OTelValueRecorder.
12
+ *
13
+ * @param histogram - OpenTelemetry Histogram to record values.
14
+ * @param tags - Tags to associate with recorded values.
15
+ * @param unit - Optional unit of measurement (e.g., 's' for seconds). If provided, it indicates that the recorded values
16
+ * should be converted from microseconds to seconds.
17
+ */
18
+ constructor(histogram: OTelHistogram, tags: Record<string, string>, unit?: string);
19
+ /**
20
+ * Records a value with the associated tags.
21
+ *
22
+ * @param value - The numeric value to record.
23
+ */
24
+ recordValue(value: number): void;
25
+ }
26
+ /**
27
+ * Wrapper class for OpenTelemetry Meter that implements Meter interface.
28
+ */
29
+ export declare class OTelWrapperMeter implements Meter {
30
+ private _otelMeter;
31
+ private _histograms;
32
+ /**
33
+ * Creates an instance of OTelWrapperMeter.
34
+ *
35
+ * @param meter - OpenTelemetry Meter to wrap.
36
+ */
37
+ constructor(meter: OTelMeter);
38
+ /**
39
+ * Creates a ValueRecorder for recording metric values.
40
+ *
41
+ * @param name - The name of the metric.
42
+ * @param tags - Tags to associate with recorded values.
43
+ * @returns A ValueRecorder instance for recording metrics.
44
+ */
45
+ valueRecorder(name: string, tags: Record<string, any>): ValueRecorder;
46
+ }
47
+ /**
48
+ * Creates an OpenTelemetry wrapper meter.
49
+ * Throws an Error if @opentelemetry/api is not installed.
50
+ */
51
+ export declare function getOTelMeter(provider?: OTelMeterProvider): Meter;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOTelMeter = exports.OTelWrapperMeter = exports.OTelValueRecorder = void 0;
4
+ const version_1 = require("./version");
5
+ /* eslint-enable n/no-missing-import */
6
+ // Dynamic Runtime Require (Bundler-safe)
7
+ let otelApi = null;
8
+ let HAS_OTEL = false;
9
+ try {
10
+ // Hiding the string prevents Webpack/Vite from throwing missing dependency errors
11
+ const moduleName = '@opentelemetry/api';
12
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
13
+ otelApi = require(moduleName);
14
+ HAS_OTEL = true;
15
+ }
16
+ catch (_err) {
17
+ HAS_OTEL = false;
18
+ }
19
+ /**
20
+ * Wrapper class for OpenTelemetry Histogram that implements ValueRecorder interface.
21
+ */
22
+ class OTelValueRecorder {
23
+ /**
24
+ * Creates an instance of OTelValueRecorder.
25
+ *
26
+ * @param histogram - OpenTelemetry Histogram to record values.
27
+ * @param tags - Tags to associate with recorded values.
28
+ * @param unit - Optional unit of measurement (e.g., 's' for seconds). If provided, it indicates that the recorded values
29
+ * should be converted from microseconds to seconds.
30
+ */
31
+ constructor(histogram, tags, unit) {
32
+ this._histogram = histogram;
33
+ this._tags = tags;
34
+ this._unit = unit;
35
+ }
36
+ /**
37
+ * Records a value with the associated tags.
38
+ *
39
+ * @param value - The numeric value to record.
40
+ */
41
+ recordValue(value) {
42
+ // The SDK records value in micros and will place a special __unit tag in the tags set to 's'
43
+ // So self._unit == 's' is indication that we should convert from micros to seconds
44
+ const finalValue = this._unit === 's' ? value / 1000000 : value;
45
+ this._histogram.record(finalValue, this._tags);
46
+ }
47
+ }
48
+ exports.OTelValueRecorder = OTelValueRecorder;
49
+ /**
50
+ * Wrapper class for OpenTelemetry Meter that implements Meter interface.
51
+ */
52
+ class OTelWrapperMeter {
53
+ /**
54
+ * Creates an instance of OTelWrapperMeter.
55
+ *
56
+ * @param meter - OpenTelemetry Meter to wrap.
57
+ */
58
+ constructor(meter) {
59
+ this._otelMeter = meter;
60
+ this._histograms = {};
61
+ }
62
+ /**
63
+ * Creates a ValueRecorder for recording metric values.
64
+ *
65
+ * @param name - The name of the metric.
66
+ * @param tags - Tags to associate with recorded values.
67
+ * @returns A ValueRecorder instance for recording metrics.
68
+ */
69
+ valueRecorder(name, tags) {
70
+ const localTags = tags ? { ...tags } : {};
71
+ const unit = localTags.__unit;
72
+ delete localTags.__unit;
73
+ if (!this._histograms[name]) {
74
+ this._histograms[name] = this._otelMeter.createHistogram(name, {
75
+ unit: unit,
76
+ });
77
+ }
78
+ const histogram = this._histograms[name];
79
+ return new OTelValueRecorder(histogram, localTags, unit);
80
+ }
81
+ }
82
+ exports.OTelWrapperMeter = OTelWrapperMeter;
83
+ /**
84
+ * Creates an OpenTelemetry wrapper meter.
85
+ * Throws an Error if @opentelemetry/api is not installed.
86
+ */
87
+ function getOTelMeter(provider) {
88
+ if (!HAS_OTEL || !otelApi) {
89
+ throw new Error('OpenTelemetry is not installed. Please install it with: ' +
90
+ 'npm install @opentelemetry/api');
91
+ }
92
+ const pkgName = `${version_1.SDK_NAME}-nodejs-client`;
93
+ const pkgVersion = version_1.SDK_VERSION;
94
+ if (provider) {
95
+ return new OTelWrapperMeter(provider.getMeter(pkgName, pkgVersion));
96
+ }
97
+ // Fallback to the global OpenTelemetry metrics provider
98
+ return new OTelWrapperMeter(otelApi.metrics.getMeter(pkgName, pkgVersion));
99
+ }
100
+ exports.getOTelMeter = getOTelMeter;
@@ -0,0 +1,69 @@
1
+ import { AttributeValue, SpanStatus, TimeInput } from './observabilitytypes';
2
+ import { RequestSpan, RequestTracer } from './tracing';
3
+ import type { Tracer as OTelTracer, TracerProvider as OTelTracerProvider, Span as OTelSpan } from '@opentelemetry/api';
4
+ /**
5
+ * Wrapper class for OpenTelemetry Span that implements RequestSpan interface.
6
+ */
7
+ export declare class OTelWrapperSpan implements RequestSpan {
8
+ readonly name: string;
9
+ readonly _otelSpan: OTelSpan;
10
+ /**
11
+ * Creates an instance of OTelWrapperSpan.
12
+ *
13
+ * @param otelSpan - OpenTelemetry Span to wrap.
14
+ * @param name - The name of the span.
15
+ */
16
+ constructor(otelSpan: OTelSpan, name: string);
17
+ /**
18
+ * Sets an attribute on the span.
19
+ *
20
+ * @param key - The attribute key.
21
+ * @param value - The attribute value.
22
+ */
23
+ setAttribute(key: string, value: AttributeValue): void;
24
+ /**
25
+ * Adds an event to the span.
26
+ *
27
+ * @param key - The event key.
28
+ * @param startTime - Optional timestamp for the event.
29
+ */
30
+ addEvent(key: string, startTime?: TimeInput): void;
31
+ /**
32
+ * Sets the status of the span.
33
+ *
34
+ * @param status - The SpanStatus to set.
35
+ */
36
+ setStatus(status: SpanStatus): void;
37
+ /**
38
+ * Ends the span.
39
+ *
40
+ * @param endTime - Optional timestamp for when the span ended.
41
+ */
42
+ end(endTime?: TimeInput): void;
43
+ }
44
+ /**
45
+ * Wrapper class for OpenTelemetry Tracer that implements RequestTracer interface.
46
+ */
47
+ export declare class OTelWrapperTracer implements RequestTracer {
48
+ private _tracer;
49
+ /**
50
+ * Creates an instance of OTelWrapperTracer.
51
+ *
52
+ * @param tracer - OpenTelemetry Tracer to wrap.
53
+ */
54
+ constructor(tracer: OTelTracer);
55
+ /**
56
+ * Creates a new request span, optionally with a parent span.
57
+ *
58
+ * @param name - The name of the span.
59
+ * @param parentSpan - Optional parent span for this request.
60
+ * @param startTime - Optional timestamp for when the span started.
61
+ * @returns A RequestSpan instance for the new span.
62
+ */
63
+ requestSpan(name: string, parentSpan?: RequestSpan, startTime?: TimeInput): RequestSpan;
64
+ }
65
+ /**
66
+ * Creates an OpenTelemetry wrapper tracer.
67
+ * Throws an Error if @opentelemetry/api is not installed.
68
+ */
69
+ export declare function getOTelTracer(tracerProvider?: OTelTracerProvider): RequestTracer;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOTelTracer = exports.OTelWrapperTracer = exports.OTelWrapperSpan = void 0;
4
+ const observabilitytypes_1 = require("./observabilitytypes");
5
+ const version_1 = require("./version");
6
+ /* eslint-enable n/no-missing-import */
7
+ // Dynamic Runtime Require (Bundler-safe)
8
+ let otelApi = null;
9
+ let HAS_OTEL = false;
10
+ try {
11
+ // Hiding the string prevents Webpack/Vite from throwing missing dependency errors
12
+ const moduleName = '@opentelemetry/api';
13
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
14
+ otelApi = require(moduleName);
15
+ HAS_OTEL = true;
16
+ }
17
+ catch (_err) {
18
+ HAS_OTEL = false;
19
+ }
20
+ /**
21
+ * Wrapper class for OpenTelemetry Span that implements RequestSpan interface.
22
+ */
23
+ class OTelWrapperSpan {
24
+ /**
25
+ * Creates an instance of OTelWrapperSpan.
26
+ *
27
+ * @param otelSpan - OpenTelemetry Span to wrap.
28
+ * @param name - The name of the span.
29
+ */
30
+ constructor(otelSpan, name) {
31
+ this._otelSpan = otelSpan;
32
+ this.name = name;
33
+ }
34
+ /**
35
+ * Sets an attribute on the span.
36
+ *
37
+ * @param key - The attribute key.
38
+ * @param value - The attribute value.
39
+ */
40
+ setAttribute(key, value) {
41
+ this._otelSpan.setAttribute(key, value);
42
+ }
43
+ /**
44
+ * Adds an event to the span.
45
+ *
46
+ * @param key - The event key.
47
+ * @param startTime - Optional timestamp for the event.
48
+ */
49
+ addEvent(key, startTime) {
50
+ this._otelSpan.addEvent(key, startTime);
51
+ }
52
+ /**
53
+ * Sets the status of the span.
54
+ *
55
+ * @param status - The SpanStatus to set.
56
+ */
57
+ setStatus(status) {
58
+ // We use the non-null assertion (!) because this class cannot be
59
+ // instantiated unless otelApi successfully loaded.
60
+ let otelCode = otelApi.SpanStatusCode.UNSET;
61
+ if (status.code === observabilitytypes_1.SpanStatusCode.OK) {
62
+ otelCode = otelApi.SpanStatusCode.OK;
63
+ }
64
+ else if (status.code === observabilitytypes_1.SpanStatusCode.ERROR) {
65
+ otelCode = otelApi.SpanStatusCode.ERROR;
66
+ }
67
+ this._otelSpan.setStatus({
68
+ code: otelCode,
69
+ message: status.message,
70
+ });
71
+ }
72
+ /**
73
+ * Ends the span.
74
+ *
75
+ * @param endTime - Optional timestamp for when the span ended.
76
+ */
77
+ end(endTime) {
78
+ this._otelSpan.end(endTime);
79
+ }
80
+ }
81
+ exports.OTelWrapperSpan = OTelWrapperSpan;
82
+ /**
83
+ * Wrapper class for OpenTelemetry Tracer that implements RequestTracer interface.
84
+ */
85
+ class OTelWrapperTracer {
86
+ /**
87
+ * Creates an instance of OTelWrapperTracer.
88
+ *
89
+ * @param tracer - OpenTelemetry Tracer to wrap.
90
+ */
91
+ constructor(tracer) {
92
+ this._tracer = tracer;
93
+ }
94
+ /**
95
+ * Creates a new request span, optionally with a parent span.
96
+ *
97
+ * @param name - The name of the span.
98
+ * @param parentSpan - Optional parent span for this request.
99
+ * @param startTime - Optional timestamp for when the span started.
100
+ * @returns A RequestSpan instance for the new span.
101
+ */
102
+ requestSpan(name, parentSpan, startTime) {
103
+ // Grab the current active context from OTel
104
+ let context = otelApi.context.active();
105
+ // If the user passed in a parent span, and it is one of our wrappers,
106
+ // extract the raw OTel span and inject it into a new context.
107
+ if (parentSpan && parentSpan instanceof OTelWrapperSpan) {
108
+ context = otelApi.trace.setSpan(context, parentSpan._otelSpan);
109
+ }
110
+ // Start the new span using the safely mapped inputs
111
+ const span = this._tracer.startSpan(name, {
112
+ startTime: startTime,
113
+ kind: otelApi.SpanKind.CLIENT,
114
+ }, context);
115
+ return new OTelWrapperSpan(span, name);
116
+ }
117
+ }
118
+ exports.OTelWrapperTracer = OTelWrapperTracer;
119
+ /**
120
+ * Creates an OpenTelemetry wrapper tracer.
121
+ * Throws an Error if @opentelemetry/api is not installed.
122
+ */
123
+ function getOTelTracer(tracerProvider) {
124
+ if (!HAS_OTEL || !otelApi) {
125
+ throw new Error('OpenTelemetry is not installed. Please install it with: ' +
126
+ 'npm install @opentelemetry/api');
127
+ }
128
+ const pkgName = `com.couchbase.client/nodejs`;
129
+ const pkgVersion = version_1.SDK_VERSION;
130
+ let tracer;
131
+ if (tracerProvider) {
132
+ // Use the explicit provider they passed in
133
+ tracer = tracerProvider.getTracer(pkgName, pkgVersion);
134
+ }
135
+ else {
136
+ // Fallback to the global OpenTelemetry provider
137
+ tracer = otelApi.trace.getTracer(pkgName, pkgVersion);
138
+ }
139
+ return new OTelWrapperTracer(tracer);
140
+ }
141
+ exports.getOTelTracer = getOTelTracer;
@@ -1,5 +1,7 @@
1
1
  import { CppError, CppQueryResponse } from './binding';
2
2
  import { Cluster } from './cluster';
3
+ import { ObservableRequestHandler } from './observabilityhandler';
4
+ import { ObservabilityInstruments } from './observabilitytypes';
3
5
  import { QueryMetaData, QueryOptions, QueryResult } from './querytypes';
4
6
  import { StreamableRowPromise } from './streamablepromises';
5
7
  /**
@@ -14,7 +16,21 @@ export declare class QueryExecutor {
14
16
  /**
15
17
  * @internal
16
18
  */
19
+ get observabilityInstruments(): ObservabilityInstruments;
20
+ /**
21
+ * @internal
22
+ */
23
+ static _processQueryResponse<TRow>(emitter: StreamableRowPromise<QueryResult<TRow>, TRow, QueryMetaData>, err: Error | null, resp: CppQueryResponse, obsReqHandler?: ObservableRequestHandler): void;
24
+ /**
25
+ * @internal
26
+ *
27
+ * Used by transactions (observability currently not available for transactions)
28
+ */
17
29
  static execute<TRow = any>(exec: (callback: (err: CppError | null, resp: CppQueryResponse) => void) => void): StreamableRowPromise<QueryResult<TRow>, TRow, QueryMetaData>;
30
+ /**
31
+ * @internal
32
+ */
33
+ static executePromise<TRow = any>(queryPromise: Promise<[Error | null, CppQueryResponse]>, obsReqHandler: ObservableRequestHandler): StreamableRowPromise<QueryResult<TRow>, TRow, QueryMetaData>;
18
34
  /**
19
35
  * @internal
20
36
  */