couchbase 4.6.1 → 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 (312) hide show
  1. package/CMakeLists.txt +2 -1
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +23 -5
  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 +2 -2
  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 +41 -0
  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 +3 -3
  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/bindingutilities.js +1 -1
  234. package/dist/bucket.d.ts +8 -0
  235. package/dist/bucket.js +8 -0
  236. package/dist/bucketmanager.d.ts +30 -0
  237. package/dist/bucketmanager.js +128 -69
  238. package/dist/cluster.d.ts +45 -0
  239. package/dist/cluster.js +133 -21
  240. package/dist/collection.d.ts +75 -2
  241. package/dist/collection.js +772 -551
  242. package/dist/collectionmanager.d.ts +34 -0
  243. package/dist/collectionmanager.js +172 -89
  244. package/dist/couchbase.d.ts +5 -0
  245. package/dist/couchbase.js +5 -0
  246. package/dist/datastructures.js +310 -97
  247. package/dist/errors.d.ts +8 -0
  248. package/dist/errors.js +12 -1
  249. package/dist/eventingfunctionmanager.d.ts +42 -0
  250. package/dist/eventingfunctionmanager.js +172 -100
  251. package/dist/logger.d.ts +192 -0
  252. package/dist/logger.js +213 -0
  253. package/dist/loggingmeter.d.ts +120 -0
  254. package/dist/loggingmeter.js +226 -0
  255. package/dist/metrics.d.ts +33 -0
  256. package/dist/metrics.js +5 -0
  257. package/dist/observability.d.ts +60 -0
  258. package/dist/observability.js +86 -0
  259. package/dist/observabilityhandler.d.ts +176 -0
  260. package/dist/observabilityhandler.js +733 -0
  261. package/dist/observabilitytypes.d.ts +320 -0
  262. package/dist/observabilitytypes.js +362 -0
  263. package/dist/observabilityutilities.d.ts +60 -0
  264. package/dist/observabilityutilities.js +175 -0
  265. package/dist/otelmeter.d.ts +51 -0
  266. package/dist/otelmeter.js +100 -0
  267. package/dist/oteltracer.d.ts +69 -0
  268. package/dist/oteltracer.js +141 -0
  269. package/dist/queryexecutor.d.ts +16 -0
  270. package/dist/queryexecutor.js +128 -86
  271. package/dist/queryindexmanager.d.ts +29 -0
  272. package/dist/queryindexmanager.js +277 -150
  273. package/dist/querytypes.d.ts +5 -0
  274. package/dist/scope.js +2 -2
  275. package/dist/scopeeventingfunctionmanager.d.ts +5 -0
  276. package/dist/scopeeventingfunctionmanager.js +217 -119
  277. package/dist/scopesearchindexmanager.d.ts +5 -0
  278. package/dist/scopesearchindexmanager.js +295 -166
  279. package/dist/sdspecs.js +6 -1
  280. package/dist/searchexecutor.d.ts +15 -0
  281. package/dist/searchexecutor.js +54 -26
  282. package/dist/searchindexmanager.d.ts +54 -0
  283. package/dist/searchindexmanager.js +235 -142
  284. package/dist/searchtypes.d.ts +5 -0
  285. package/dist/thresholdlogging.d.ts +301 -0
  286. package/dist/thresholdlogging.js +657 -0
  287. package/dist/tracing.d.ts +55 -0
  288. package/dist/tracing.js +2 -0
  289. package/dist/usermanager.d.ts +46 -0
  290. package/dist/usermanager.js +199 -118
  291. package/dist/utilities.d.ts +4 -0
  292. package/dist/utilities.js +11 -1
  293. package/dist/version.d.ts +2 -0
  294. package/dist/version.js +7 -0
  295. package/dist/viewexecutor.d.ts +15 -0
  296. package/dist/viewexecutor.js +54 -29
  297. package/dist/viewindexmanager.d.ts +30 -0
  298. package/dist/viewindexmanager.js +129 -100
  299. package/dist/viewtypes.d.ts +5 -0
  300. package/package.json +19 -9
  301. package/scripts/prebuilds.js +1 -1
  302. package/scripts/updateVersion.js +26 -0
  303. package/src/connection.cpp +79 -98
  304. package/src/connection.hpp +46 -38
  305. package/src/connection_autogen.cpp +1236 -292
  306. package/src/jstocbpp_autogen.hpp +1117 -313
  307. package/src/jstocbpp_basic.hpp +73 -0
  308. package/src/jstocbpp_defs.hpp +37 -9
  309. package/src/jstocbpp_errors.hpp +37 -11
  310. package/tools/gen-bindings-js.js +100 -22
  311. package/tools/gen-bindings-json.py +40 -6
  312. package/src/transcoder.hpp +0 -96
@@ -10,6 +10,7 @@
10
10
  #include <core/json_string.hxx>
11
11
  #include <core/management/eventing_function.hxx>
12
12
  #include <core/query_context.hxx>
13
+ #include <core/tracing/wrapper_sdk_tracer.hxx>
13
14
  #include <couchbase/codec/encoded_value.hxx>
14
15
 
15
16
  namespace couchnode
@@ -41,6 +42,7 @@ struct js_to_cbpp_t<couchbase::core::cluster_credentials> {
41
42
  js_to_cbpp(cppObj.password, jsObj.Get("password"));
42
43
  js_to_cbpp(cppObj.certificate_path, jsObj.Get("certificate_path"));
43
44
  js_to_cbpp(cppObj.key_path, jsObj.Get("key_path"));
45
+ js_to_cbpp(cppObj.jwt_token, jsObj.Get("jwt_token"));
44
46
  js_to_cbpp(cppObj.allowed_sasl_mechanisms,
45
47
  jsObj.Get("allowed_sasl_mechanisms"));
46
48
  return cppObj;
@@ -157,4 +159,75 @@ struct js_to_cbpp_t<couchbase::codec::encoded_value> {
157
159
  }
158
160
  };
159
161
 
162
+ template <>
163
+ struct js_to_cbpp_t<
164
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>> {
165
+ static inline Napi::Value cbpp_wrapper_span_to_js(
166
+ Napi::Env env,
167
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span> wrapperSpan)
168
+ {
169
+ if (nullptr == wrapperSpan || wrapperSpan->children().empty()) {
170
+ return env.Undefined();
171
+ }
172
+ auto spanObj = Napi::Object::New(env);
173
+ auto jsAttributesObj = Napi::Object::New(env);
174
+ for (const auto &[key, value] : wrapperSpan->uint_tags()) {
175
+ jsAttributesObj.Set(key, cbpp_to_js(env, value));
176
+ }
177
+ for (const auto &[key, value] : wrapperSpan->string_tags()) {
178
+ jsAttributesObj.Set(key, cbpp_to_js(env, value));
179
+ }
180
+ spanObj.Set("attributes", jsAttributesObj);
181
+ spanObj.Set(
182
+ "children",
183
+ cbpp_to_js<std::vector<
184
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>>>(
185
+ env, wrapperSpan->children()));
186
+ return spanObj;
187
+ }
188
+ static inline Napi::Value to_js(
189
+ Napi::Env env,
190
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span> wrapperSpan)
191
+ {
192
+ if (nullptr == wrapperSpan) {
193
+ return env.Undefined();
194
+ }
195
+ auto resObj = Napi::Object::New(env);
196
+ resObj.Set("name", cbpp_to_js(env, wrapperSpan->name()));
197
+ constexpr int64_t NANOS_PER_SEC = 1'000'000'000;
198
+ auto start_time_since_epoch =
199
+ wrapperSpan->start_time().time_since_epoch();
200
+ auto start_time_ns =
201
+ std::chrono::duration_cast<std::chrono::nanoseconds>(
202
+ start_time_since_epoch)
203
+ .count();
204
+ resObj.Set("start", cbpp_to_js<std::array<int64_t, 2>>(
205
+ env, {start_time_ns / NANOS_PER_SEC,
206
+ start_time_ns % NANOS_PER_SEC}));
207
+ auto end_time_since_epoch = wrapperSpan->end_time().time_since_epoch();
208
+ auto end_time_ns = std::chrono::duration_cast<std::chrono::nanoseconds>(
209
+ end_time_since_epoch)
210
+ .count();
211
+ resObj.Set("end", cbpp_to_js<std::array<int64_t, 2>>(
212
+ env, {end_time_ns / NANOS_PER_SEC,
213
+ end_time_ns % NANOS_PER_SEC}));
214
+ auto jsAttributesObj = Napi::Object::New(env);
215
+ for (const auto &[key, value] : wrapperSpan->uint_tags()) {
216
+ jsAttributesObj.Set(key, cbpp_to_js(env, value));
217
+ }
218
+ for (const auto &[key, value] : wrapperSpan->string_tags()) {
219
+ jsAttributesObj.Set(key, cbpp_to_js(env, value));
220
+ }
221
+ resObj.Set("attributes", jsAttributesObj);
222
+ // some operations in the C++ core handle sub-operations (e.g. replicas, etc.)
223
+ if (!wrapperSpan->children().empty()) {
224
+ resObj.Set("children",
225
+ cbpp_to_js<std::vector<std::shared_ptr<
226
+ couchbase::core::tracing::wrapper_sdk_span>>>(
227
+ env, wrapperSpan->children()));
228
+ }
229
+ return resObj;
230
+ }
231
+ };
232
+
160
233
  } // namespace couchnode
@@ -1,7 +1,9 @@
1
1
  #pragma once
2
2
  #include <napi.h>
3
3
 
4
- #include "transcoder.hpp"
4
+ #include <core/error_context/key_value.hxx>
5
+ #include <core/error_context/query_error_context.hxx>
6
+ #include <core/tracing/wrapper_sdk_tracer.hxx>
5
7
 
6
8
  namespace couchnode
7
9
  {
@@ -27,11 +29,13 @@ static inline Napi::Value cbpp_to_js(Napi::Env env, const T &cppObj)
27
29
  return js_to_cbpp_t<T>::to_js(env, cppObj);
28
30
  }
29
31
 
32
+ // used w/in connection.hpp -> executeOp()
30
33
  template <typename T>
31
- static inline Napi::Value cbpp_to_js(Napi::Env env, const T &cppObj,
32
- const Transcoder &transcoder)
34
+ static inline Napi::Value cbpp_to_js(
35
+ Napi::Env env, const T &cppObj,
36
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span> wrapperSpan)
33
37
  {
34
- return js_to_cbpp_t<T>::to_js(env, cppObj, transcoder);
38
+ return js_to_cbpp_t<T>::to_js(env, cppObj, wrapperSpan);
35
39
  }
36
40
 
37
41
  template <typename T>
@@ -40,10 +44,13 @@ static inline T jsToCbpp(Napi::Value jsVal)
40
44
  return js_to_cbpp_t<T>::from_js(jsVal);
41
45
  }
42
46
 
47
+ // used w/ methods in connection_autogen.cpp (jsGet(), etc.)
43
48
  template <typename T>
44
- static inline T jsToCbpp(Napi::Value jsVal, const Transcoder &transcoder)
49
+ static inline T jsToCbpp(
50
+ Napi::Value jsVal,
51
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span> wrapperSpan)
45
52
  {
46
- return js_to_cbpp_t<T>::from_js(jsVal, transcoder);
53
+ return js_to_cbpp_t<T>::from_js(jsVal, wrapperSpan);
47
54
  }
48
55
 
49
56
  template <typename T>
@@ -52,11 +59,32 @@ Napi::Value cbppToJs(Napi::Env env, const T &cppObj)
52
59
  return js_to_cbpp_t<T>::to_js(env, cppObj);
53
60
  }
54
61
 
62
+ // tracing additions
63
+ // used w/ jstocbpp_autogen.cpp response objects & jscbpp_errors.hpp
55
64
  template <typename T>
56
- Napi::Value cbppToJs(Napi::Env env, const T &cppObj,
57
- const Transcoder &transcoder)
65
+ static inline Napi::Value cbpp_wrapper_span_to_js(Napi::Env env, T wrapperSpan)
58
66
  {
59
- return js_to_cbpp_t<T>::to_js(env, cppObj, transcoder);
67
+ return js_to_cbpp_t<T>::cbpp_wrapper_span_to_js(env, wrapperSpan);
68
+ }
69
+ template <typename T>
70
+ static inline size_t get_cbpp_retries(const T &ctx)
71
+ {
72
+ return ctx.retry_attempts;
73
+ }
74
+ template <>
75
+ size_t get_cbpp_retries(const couchbase::core::key_value_error_context &ctx)
76
+ {
77
+ return ctx.retry_attempts();
78
+ }
79
+ template <>
80
+ size_t get_cbpp_retries(const couchbase::core::subdocument_error_context &ctx)
81
+ {
82
+ return ctx.retry_attempts();
83
+ }
84
+ template <>
85
+ size_t get_cbpp_retries(const couchbase::core::query_error_context &ctx)
86
+ {
87
+ return ctx.retry_attempts();
60
88
  }
61
89
 
62
90
  } // namespace couchnode
@@ -5,8 +5,9 @@
5
5
  #include "jstocbpp_cpptypes.hpp"
6
6
 
7
7
  #include <core/cluster.hxx>
8
- #include <core/operations/management/error_utils.hxx>
9
8
  #include <core/error_context/query_error_context.hxx>
9
+ #include <core/operations/management/error_utils.hxx>
10
+ #include <core/tracing/wrapper_sdk_tracer.hxx>
10
11
 
11
12
  namespace couchnode
12
13
  {
@@ -43,7 +44,8 @@ struct js_to_cbpp_t<std::error_code> {
43
44
  template <>
44
45
  struct js_to_cbpp_t<couchbase::core::key_value_extended_error_info> {
45
46
  static inline Napi::Value
46
- to_js(Napi::Env env, const couchbase::core::key_value_extended_error_info &cppObj)
47
+ to_js(Napi::Env env,
48
+ const couchbase::core::key_value_extended_error_info &cppObj)
47
49
  {
48
50
  auto resObj = Napi::Object::New(env);
49
51
  resObj.Set("reference", cbpp_to_js(env, cppObj.reference()));
@@ -55,7 +57,9 @@ struct js_to_cbpp_t<couchbase::core::key_value_extended_error_info> {
55
57
  template <>
56
58
  struct js_to_cbpp_t<couchbase::core::key_value_error_context> {
57
59
  static inline Napi::Value
58
- to_js(Napi::Env env, const couchbase::core::key_value_error_context &ctx)
60
+ to_js(Napi::Env env, const couchbase::core::key_value_error_context &ctx,
61
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>
62
+ wrapperSpan = nullptr)
59
63
  {
60
64
  if (!ctx.ec()) {
61
65
  return env.Null();
@@ -76,6 +80,7 @@ struct js_to_cbpp_t<couchbase::core::key_value_error_context> {
76
80
  cbpp_to_js(env, ctx.last_dispatched_from()));
77
81
  err.Set("retry_attempts", cbpp_to_js(env, ctx.retry_attempts()));
78
82
  err.Set("retry_reasons", cbpp_to_js(env, ctx.retry_reasons()));
83
+ err.Set("cpp_core_span", cbpp_wrapper_span_to_js(env, wrapperSpan));
79
84
  return err.Value();
80
85
  }
81
86
  };
@@ -83,7 +88,9 @@ struct js_to_cbpp_t<couchbase::core::key_value_error_context> {
83
88
  template <>
84
89
  struct js_to_cbpp_t<couchbase::core::subdocument_error_context> {
85
90
  static inline Napi::Value
86
- to_js(Napi::Env env, const couchbase::core::subdocument_error_context &ctx)
91
+ to_js(Napi::Env env, const couchbase::core::subdocument_error_context &ctx,
92
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>
93
+ wrapperSpan = nullptr)
87
94
  {
88
95
  if (!ctx.ec()) {
89
96
  return env.Null();
@@ -107,6 +114,7 @@ struct js_to_cbpp_t<couchbase::core::subdocument_error_context> {
107
114
  err.Set("first_error_path", cbpp_to_js(env, ctx.first_error_path()));
108
115
  err.Set("first_error_index", cbpp_to_js(env, ctx.first_error_index()));
109
116
  err.Set("deleted", cbpp_to_js(env, ctx.deleted()));
117
+ err.Set("cpp_core_span", cbpp_wrapper_span_to_js(env, wrapperSpan));
110
118
  return err.Value();
111
119
  }
112
120
  };
@@ -114,7 +122,9 @@ struct js_to_cbpp_t<couchbase::core::subdocument_error_context> {
114
122
  template <>
115
123
  struct js_to_cbpp_t<couchbase::core::error_context::view> {
116
124
  static inline Napi::Value
117
- to_js(Napi::Env env, const couchbase::core::error_context::view &ctx)
125
+ to_js(Napi::Env env, const couchbase::core::error_context::view &ctx,
126
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>
127
+ wrapperSpan = nullptr)
118
128
  {
119
129
  if (!ctx.ec) {
120
130
  return env.Null();
@@ -140,6 +150,7 @@ struct js_to_cbpp_t<couchbase::core::error_context::view> {
140
150
  cbpp_to_js(env, ctx.last_dispatched_from));
141
151
  err.Set("retry_attempts", cbpp_to_js(env, ctx.retry_attempts));
142
152
  err.Set("retry_reasons", cbpp_to_js(env, ctx.retry_reasons));
153
+ err.Set("cpp_core_span", cbpp_wrapper_span_to_js(env, wrapperSpan));
143
154
  return err.Value();
144
155
  }
145
156
  };
@@ -147,7 +158,9 @@ struct js_to_cbpp_t<couchbase::core::error_context::view> {
147
158
  template <>
148
159
  struct js_to_cbpp_t<couchbase::core::error_context::query> {
149
160
  static inline Napi::Value
150
- to_js(Napi::Env env, const couchbase::core::error_context::query &ctx)
161
+ to_js(Napi::Env env, const couchbase::core::error_context::query &ctx,
162
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>
163
+ wrapperSpan = nullptr)
151
164
  {
152
165
  if (!ctx.ec) {
153
166
  return env.Null();
@@ -184,14 +197,17 @@ struct js_to_cbpp_t<couchbase::core::error_context::query> {
184
197
  cbpp_to_js(env, ctx.last_dispatched_from));
185
198
  err.Set("retry_attempts", cbpp_to_js(env, ctx.retry_attempts));
186
199
  err.Set("retry_reasons", cbpp_to_js(env, ctx.retry_reasons));
200
+ err.Set("cpp_core_span", cbpp_wrapper_span_to_js(env, wrapperSpan));
187
201
  return err.Value();
188
202
  }
189
203
  };
190
204
 
191
205
  template <>
192
206
  struct js_to_cbpp_t<couchbase::core::query_error_context> {
193
- static inline Napi::Value to_js(Napi::Env env,
194
- const couchbase::core::query_error_context &ctx)
207
+ static inline Napi::Value
208
+ to_js(Napi::Env env, const couchbase::core::query_error_context &ctx,
209
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>
210
+ wrapperSpan = nullptr)
195
211
  {
196
212
  if (!ctx.ec()) {
197
213
  return env.Null();
@@ -219,6 +235,7 @@ struct js_to_cbpp_t<couchbase::core::query_error_context> {
219
235
  cbpp_to_js(env, ctx.last_dispatched_from()));
220
236
  err.Set("retry_attempts", cbpp_to_js(env, ctx.retry_attempts()));
221
237
  err.Set("retry_reasons", cbpp_to_js(env, ctx.retry_reasons()));
238
+ err.Set("cpp_core_span", cbpp_wrapper_span_to_js(env, wrapperSpan));
222
239
  return err.Value();
223
240
  }
224
241
  };
@@ -226,7 +243,9 @@ struct js_to_cbpp_t<couchbase::core::query_error_context> {
226
243
  template <>
227
244
  struct js_to_cbpp_t<couchbase::core::error_context::search> {
228
245
  static inline Napi::Value
229
- to_js(Napi::Env env, const couchbase::core::error_context::search &ctx)
246
+ to_js(Napi::Env env, const couchbase::core::error_context::search &ctx,
247
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>
248
+ wrapperSpan = nullptr)
230
249
  {
231
250
  if (!ctx.ec) {
232
251
  return env.Null();
@@ -260,6 +279,7 @@ struct js_to_cbpp_t<couchbase::core::error_context::search> {
260
279
  cbpp_to_js(env, ctx.last_dispatched_from));
261
280
  err.Set("retry_attempts", cbpp_to_js(env, ctx.retry_attempts));
262
281
  err.Set("retry_reasons", cbpp_to_js(env, ctx.retry_reasons));
282
+ err.Set("cpp_core_span", cbpp_wrapper_span_to_js(env, wrapperSpan));
263
283
  return err.Value();
264
284
  }
265
285
  };
@@ -267,7 +287,9 @@ struct js_to_cbpp_t<couchbase::core::error_context::search> {
267
287
  template <>
268
288
  struct js_to_cbpp_t<couchbase::core::error_context::analytics> {
269
289
  static inline Napi::Value
270
- to_js(Napi::Env env, const couchbase::core::error_context::analytics &ctx)
290
+ to_js(Napi::Env env, const couchbase::core::error_context::analytics &ctx,
291
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>
292
+ wrapperSpan = nullptr)
271
293
  {
272
294
  if (!ctx.ec) {
273
295
  return env.Null();
@@ -304,6 +326,7 @@ struct js_to_cbpp_t<couchbase::core::error_context::analytics> {
304
326
  cbpp_to_js(env, ctx.last_dispatched_from));
305
327
  err.Set("retry_attempts", cbpp_to_js(env, ctx.retry_attempts));
306
328
  err.Set("retry_reasons", cbpp_to_js(env, ctx.retry_reasons));
329
+ err.Set("cpp_core_span", cbpp_wrapper_span_to_js(env, wrapperSpan));
307
330
  return err.Value();
308
331
  }
309
332
  };
@@ -311,7 +334,9 @@ struct js_to_cbpp_t<couchbase::core::error_context::analytics> {
311
334
  template <>
312
335
  struct js_to_cbpp_t<couchbase::core::error_context::http> {
313
336
  static inline Napi::Value
314
- to_js(Napi::Env env, const couchbase::core::error_context::http &ctx)
337
+ to_js(Napi::Env env, const couchbase::core::error_context::http &ctx,
338
+ std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span>
339
+ wrapperSpan = nullptr)
315
340
  {
316
341
  if (!ctx.ec) {
317
342
  return env.Null();
@@ -332,6 +357,7 @@ struct js_to_cbpp_t<couchbase::core::error_context::http> {
332
357
  cbpp_to_js(env, ctx.last_dispatched_from));
333
358
  err.Set("retry_attempts", cbpp_to_js(env, ctx.retry_attempts));
334
359
  err.Set("retry_reasons", cbpp_to_js(env, ctx.retry_reasons));
360
+ err.Set("cpp_core_span", cbpp_wrapper_span_to_js(env, wrapperSpan));
335
361
  return err.Value();
336
362
  }
337
363
  };
@@ -7,6 +7,7 @@ const CustomDefinedTypes = [
7
7
  'couchbase::mutation_token',
8
8
  'couchbase::retry_strategy',
9
9
  'couchbase::core::query_context',
10
+ 'couchbase::core::wrapper_sdk_span',
10
11
  ]
11
12
 
12
13
  const handleJsVariant = {
@@ -17,6 +18,10 @@ const handleJsVariant = {
17
18
  fields: ['scan_type', 'auth'],
18
19
  }
19
20
 
21
+ const otherObservableTypes = [
22
+ 'couchbase::core::range_scan_orchestrator_options'
23
+ ]
24
+
20
25
  function getTsType(type, typeDb) {
21
26
  // special case for std::vector<std::byte> which is a Buffer
22
27
  if (type.name === 'std::vector' && type.of.name === 'std::byte') {
@@ -88,6 +93,8 @@ function getTsType(type, typeDb) {
88
93
  // return 'CppJsonString'
89
94
  case 'couchbase::core::impl::subdoc::opcode':
90
95
  return 'number'
96
+ case 'couchbase::core::tracing::wrapper_sdk_span':
97
+ return getStructTsName(type.name)
91
98
  }
92
99
 
93
100
  const opsStructs = typeDb.op_structs
@@ -249,7 +256,7 @@ function isIgnoredField(st, fieldName) {
249
256
  fieldName === 'retry_strategy' ||
250
257
  fieldName === 'internal' ||
251
258
  fieldName === 'revive_document' ||
252
- fieldName === 'num_vbuckets' ||
259
+ fieldName === 'cpp_core_span' ||
253
260
  (fieldName.endsWith('_') &&
254
261
  !StructsWithAllowedPrivateField.includes(st.name))
255
262
  ) {
@@ -259,6 +266,18 @@ function isIgnoredField(st, fieldName) {
259
266
  return false
260
267
  }
261
268
 
269
+ function getOpReqName(name){
270
+ if (name.endsWith('_request')) {
271
+ return name.substr(0, name.length - 8)
272
+ }
273
+ if (name.endsWith('_with_legacy_durability')) {
274
+ return name
275
+ }
276
+ if (name.endsWith('>')) {
277
+ return name.replace('_request', '')
278
+ }
279
+ }
280
+
262
281
  const FILE_WRITER_DEBUG = false
263
282
  class FileWriter {
264
283
  constructor(regionName) {
@@ -340,19 +359,28 @@ async function go() {
340
359
  )
341
360
 
342
361
  const opReqTypes = []
362
+ const opStructReqsWithTracing = []
363
+ const opStructRespsWithTracing = []
343
364
  opsStructs.forEach((opStruct) => {
344
- if (opStruct.name.endsWith('_request')) {
345
- const opReqName = opStruct.name.substr(0, opStruct.name.length - 8)
346
- opReqTypes.push(opReqName)
365
+ const reqName = getOpReqName(opStruct.name)
366
+ if (reqName) {
367
+ opReqTypes.push(reqName)
347
368
  }
348
- if (opStruct.name.endsWith('_with_legacy_durability')) {
349
- opReqTypes.push(opStruct.name)
369
+ // handle tracing for requests
370
+ if (opStruct.fields.some((f) => f.name === 'parent_span')) {
371
+ opStructReqsWithTracing.push(opStruct.name)
350
372
  }
351
- if (opStruct.name.endsWith('>')) {
352
- opReqTypes.push(opStruct.name.replace('_request', ''))
373
+ // handle tracing for responses
374
+ if (opStruct.fields.some((f) => f.name === 'cpp_core_span')) {
375
+ opStructRespsWithTracing.push(opStruct.name)
353
376
  }
354
377
  })
355
378
 
379
+ for (const op of opStructRespsWithTracing) {
380
+ console.log(op)
381
+ }
382
+
383
+
356
384
  // filter out the custom types
357
385
  opsStructs = opsStructs.filter(
358
386
  (x) =>
@@ -384,24 +412,30 @@ async function go() {
384
412
  ? getStructTsName(opStruct.name + '_request')
385
413
  : getStructTsName(opStruct.name)
386
414
 
387
- outJsAll.write(`export interface ${jsTypeName} {`)
415
+ if (opStruct.fields.find(f => f.name === 'parent_span')) {
416
+ outJsAll.write(`export interface ${jsTypeName} extends CppObservableRequest {`)
417
+ } else if (opStruct.fields.find(f => f.name === 'cpp_core_span')) {
418
+ outJsAll.write(`export interface ${jsTypeName} extends CppObservableResponse {`)
419
+ } else {
420
+ outJsAll.write(`export interface ${jsTypeName} {`)
421
+ }
422
+
388
423
  opStruct.fields.forEach((field) => {
389
- // ignnore the ctx and retries fields
390
- if (isIgnoredField(opStruct, field.name)) {
424
+ // cpp_core_span is provided with the response interface extending the CppObservabelResponse interface
425
+ if (field.name === 'cpp_core_span') {
426
+ return
427
+ } else if (isIgnoredField(opStruct, field.name)) {
391
428
  outJsAll.write(` // ${field.name}`)
392
429
  return
393
430
  }
394
431
 
395
432
  // special case for optional fields
396
433
  if (field.type.name === 'std::optional') {
397
- const jsFieldName = field.name
398
434
  const jsFieldType = getTsType(field.type.of, ops)
399
-
400
- outJsAll.write(` ${jsFieldName}?: ${jsFieldType}`)
435
+ outJsAll.write(` ${field.name}?: ${jsFieldType}`)
401
436
  } else if (field.type.name === 'template') {
402
437
  const jsFieldName = field.name
403
438
  const jsFieldType = getStructTsName(field.type.of.name)
404
-
405
439
  outJsAll.write(` ${jsFieldName}: ${jsFieldType}`)
406
440
  } else {
407
441
  const jsFieldName = field.name
@@ -484,6 +518,17 @@ async function go() {
484
518
  outJsAll.write('}')
485
519
  outJsAll.write('')
486
520
 
521
+ // Create CppObservableRequests union type
522
+ const observableRequestTypes = []
523
+ opReqTypes.forEach((x) => {
524
+ const jsReqName = getStructTsName(x + '_request')
525
+ if (opStructReqsWithTracing.find(r => getOpReqName(r) === x)) {
526
+ observableRequestTypes.push(jsReqName)
527
+ }
528
+ })
529
+ outJsAll.write(`export type CppObservableRequests = ${observableRequestTypes.join(" | ")}`)
530
+ outJsAll.write('')
531
+
487
532
  //outJsAll.write('//#endregion Autogen Code')
488
533
  //await outJsAll.save('./out/js_all.ts')
489
534
  await outJsAll.saveToRegion('../lib/binding.ts')
@@ -526,18 +571,34 @@ async function go() {
526
571
  outCppFuncDefs.write(
527
572
  ` auto callbackJsFn = info[1].As<Napi::Function>();`
528
573
  )
574
+ const reqArgs = ['optsJsObj']
575
+ const reqHasTracing = opStructReqsWithTracing.find(r => getOpReqName(r) === x)
576
+ if (reqHasTracing) {
577
+ outCppFuncDefs.write(``)
578
+ outCppFuncDefs.write(` std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span> wrapper_span;`)
579
+ outCppFuncDefs.write(` auto span_name = jsToCbpp<std::string>(optsJsObj.Get("wrapper_span_name"));`)
580
+ outCppFuncDefs.write(` if (!span_name.empty()) {`)
581
+ outCppFuncDefs.write(` wrapper_span = std::make_shared<couchbase::core::tracing::wrapper_sdk_span>(span_name);`)
582
+ outCppFuncDefs.write(` }`)
583
+ reqArgs.push('wrapper_span')
584
+ }
529
585
  outCppFuncDefs.write(``)
530
586
  outCppFuncDefs.write(` executeOp("${cppBaseOpName}",`)
531
587
  if (x.endsWith('_with_legacy_durability')) {
532
- outCppFuncDefs.write(` jsToCbpp<${x}>(optsJsObj),`)
588
+ outCppFuncDefs.write(` jsToCbpp<${x}>(${reqArgs.join(", ")}),`)
533
589
  } else if (x.endsWith('>')) {
534
590
  const reqTokens = x.split('<')
535
591
  const cppReqName = reqTokens[0] + '_request<' + reqTokens[1]
536
- outCppFuncDefs.write(` jsToCbpp<${cppReqName}>(optsJsObj),`)
592
+ outCppFuncDefs.write(` jsToCbpp<${cppReqName}>(${reqArgs.join(", ")}),`)
593
+ } else {
594
+ outCppFuncDefs.write(` jsToCbpp<${x}_request>(${reqArgs.join(", ")}),`)
595
+ }
596
+ if (reqHasTracing) {
597
+ outCppFuncDefs.write(` callbackJsFn,`)
598
+ outCppFuncDefs.write(` wrapper_span);`)
537
599
  } else {
538
- outCppFuncDefs.write(` jsToCbpp<${x}_request>(optsJsObj),`)
600
+ outCppFuncDefs.write(` callbackJsFn);`)
539
601
  }
540
- outCppFuncDefs.write(` callbackJsFn);`)
541
602
  outCppFuncDefs.write(``)
542
603
  outCppFuncDefs.write(` return info.Env().Null();`)
543
604
  outCppFuncDefs.write(`}`)
@@ -619,7 +680,12 @@ async function go() {
619
680
  outCppStructDefs.write(`struct js_to_cbpp_t<${st.name}> {`)
620
681
 
621
682
  outCppStructDefs.write(` static inline ${st.name}`)
622
- outCppStructDefs.write(` from_js(Napi::Value jsVal)`)
683
+ if (opStructReqsWithTracing.includes(st.name)) {
684
+ outCppStructDefs.write(` from_js(Napi::Value jsVal,`)
685
+ outCppStructDefs.write(` std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span> wrapperSpan)`)
686
+ } else {
687
+ outCppStructDefs.write(` from_js(Napi::Value jsVal)`)
688
+ }
623
689
  outCppStructDefs.write(` {`)
624
690
  outCppStructDefs.write(` auto jsObj = jsVal.ToObject();`)
625
691
  const variantFields = st.fields.filter((field) => {
@@ -663,7 +729,9 @@ async function go() {
663
729
  })
664
730
  outCppStructDefs.write(` ${st.name} cppObj;`)
665
731
  st.fields.forEach((field) => {
666
- if (isIgnoredField(st, field.name)) {
732
+ if (opStructReqsWithTracing.includes(st.name) && field.name == 'parent_span' ) {
733
+ outCppStructDefs.write(` cppObj.${field.name} = wrapperSpan;`)
734
+ } else if (isIgnoredField(st, field.name)) {
667
735
  outCppStructDefs.write(` // ${field.name}`)
668
736
  } else if (
669
737
  handleJsVariant.names.includes(st.name) &&
@@ -681,7 +749,13 @@ async function go() {
681
749
  outCppStructDefs.write(` }`)
682
750
 
683
751
  outCppStructDefs.write(` static inline Napi::Value`)
684
- outCppStructDefs.write(` to_js(Napi::Env env, const ${st.name} &cppObj)`)
752
+ if (st.name.endsWith('response') || otherObservableTypes.includes(st.name)) {
753
+ outCppStructDefs.write(` to_js(Napi::Env env,`)
754
+ outCppStructDefs.write(` const ${st.name} &cppObj,`)
755
+ outCppStructDefs.write(` std::shared_ptr<couchbase::core::tracing::wrapper_sdk_span> wrapperSpan = nullptr)`)
756
+ } else {
757
+ outCppStructDefs.write(` to_js(Napi::Env env, const ${st.name} &cppObj)`)
758
+ }
685
759
  outCppStructDefs.write(` {`)
686
760
  outCppStructDefs.write(` auto resObj = Napi::Object::New(env);`)
687
761
  variantFields.forEach((field) => {
@@ -708,6 +782,10 @@ async function go() {
708
782
  return
709
783
  })
710
784
  st.fields.forEach((field) => {
785
+ if (field.name == 'cpp_core_span' && opStructRespsWithTracing.includes(st.name)) {
786
+ outCppStructDefs.write(` resObj.Set("${field.name}", cbpp_wrapper_span_to_js(env, wrapperSpan));`)
787
+ return
788
+ }
711
789
  if (isIgnoredField(st, field.name)) {
712
790
  outCppStructDefs.write(` // ${field.name}`)
713
791
  return
@@ -72,6 +72,7 @@ FILE_LIST = [
72
72
  "core/view_scan_consistency.hxx",
73
73
  "core/view_sort_order.hxx",
74
74
  "core/operations/*",
75
+ "core/operations/document_view.hxx",
75
76
  "core/operations/management/*",
76
77
  "couchbase/durability_level.hxx",
77
78
  "couchbase/cas.hxx",
@@ -308,10 +309,11 @@ class BindingsGenerator:
308
309
  for headerPath in self._full_file_list:
309
310
  print("processing " + headerPath)
310
311
  index = clang.cindex.Index.create()
312
+ suppress_warnings = ['-Wno-nullability-completeness', '-Wno-deprecated-literal-operator']
311
313
  if self._verbose is True:
312
- args = ['-std=c++17', '-v', f'-isysroot{os.getcwd()}'] + self._include_paths
314
+ args = ['-std=c++17', '-v', f'-isysroot{os.getcwd()}'] + self._include_paths + suppress_warnings
313
315
  else:
314
- args = ['-std=c++17', f'-isysroot{os.getcwd()}'] + self._include_paths
316
+ args = ['-std=c++17', f'-isysroot{os.getcwd()}'] + self._include_paths + suppress_warnings
315
317
  translation_unit = index.parse(headerPath, args=args)
316
318
 
317
319
  # output clang compiler diagnostics information (for debugging)
@@ -322,6 +324,8 @@ class BindingsGenerator:
322
324
 
323
325
  self.traverse(translation_unit.cursor, [], headerPath)
324
326
 
327
+ self.process_observability()
328
+
325
329
  jsonData = json.dumps({
326
330
  'op_structs': self._op_types,
327
331
  'op_enums': self._op_enums
@@ -331,6 +335,32 @@ class BindingsGenerator:
331
335
  f.write(jsonData)
332
336
  f.close()
333
337
 
338
+ def process_observability(self) -> None:
339
+ cpp_spans_response = {
340
+ 'name': 'cpp_core_span',
341
+ 'type': {
342
+ 'name': 'std::optional',
343
+ 'of': {'name': 'std::vector', 'of': {'name':'couchbase::core::tracing::wrapper_sdk_span'}}
344
+ }
345
+ }
346
+ special_ops = ['couchbase::core::operations::management::analytics_link_create_response',
347
+ 'couchbase::core::operations::management::analytics_link_replace_response']
348
+
349
+ for op_type in self._op_types:
350
+ if op_type.get('name') in special_ops:
351
+ op_type['fields'].append(cpp_spans_response)
352
+ continue
353
+
354
+ parent_span = next((f for f in op_type.get('fields') if f.get('name') == 'parent_span'), None)
355
+ if not parent_span:
356
+ continue
357
+ parent_span['type']['name'] = 'std::optional'
358
+ parent_span['type']['of']['name'] = 'std::string'
359
+ resp_name = op_type.get('name').replace('request', 'response')
360
+ resp_op = next((op for op in self._op_types if op.get('name') == resp_name), None)
361
+ if resp_op:
362
+ resp_op['fields'].append(cpp_spans_response)
363
+
334
364
  def set_file_list(self) -> None:
335
365
  for file_path in FILE_LIST:
336
366
  if "*" in file_path:
@@ -482,10 +512,14 @@ class BindingsGenerator:
482
512
  @staticmethod
483
513
  def set_cxx_deps_include_paths(dep, includes):
484
514
  cpm_path = os.path.join(CXX_CLIENT_CACHE, dep)
485
- dir_pattern = r'[0-9a-z]{40}'
486
- cpm_hash_dir = next((d for d in os.listdir(cpm_path)
487
- if os.path.isdir(os.path.join(cpm_path, d)) and re.match(dir_pattern, d)),
488
- None)
515
+ dir_patterns = [r'[0-9a-z]{40}', r'[0-9a-z]{4}']
516
+ cpm_hash_dir = None
517
+ for dir_pattern in dir_patterns:
518
+ cpm_hash_dir = next((d for d in os.listdir(cpm_path)
519
+ if os.path.isdir(os.path.join(cpm_path, d)) and re.match(dir_pattern, d)),
520
+ None)
521
+ if cpm_hash_dir:
522
+ break
489
523
  if not cpm_hash_dir:
490
524
  raise Exception(f'Unable to find CPM hash directory for path: {cpm_path}.')
491
525
  return list(map(lambda p: p.format(CXX_CLIENT_CACHE, cpm_hash_dir), includes))