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.
- package/CMakeLists.txt +2 -1
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +23 -5
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
- package/deps/couchbase-cxx-client/CMakeLists.txt +24 -11
- package/deps/couchbase-cxx-client/README.md +2 -2
- package/deps/couchbase-cxx-client/cmake/APKBUILD.in +17 -1
- package/deps/couchbase-cxx-client/cmake/Bundler.cmake +9 -1
- package/deps/couchbase-cxx-client/cmake/Cache.cmake +48 -19
- package/deps/couchbase-cxx-client/cmake/CompilerOptions.cmake +3 -1
- package/deps/couchbase-cxx-client/cmake/OpenSSL.cmake +10 -2
- package/deps/couchbase-cxx-client/cmake/Packaging.cmake +48 -8
- package/deps/couchbase-cxx-client/cmake/ThirdPartyDependencies.cmake +41 -0
- package/deps/couchbase-cxx-client/cmake/build_config.hxx.in +2 -0
- package/deps/couchbase-cxx-client/cmake/couchbase-cxx-client.spec.in +18 -0
- package/deps/couchbase-cxx-client/cmake/debian/control +6 -1
- package/deps/couchbase-cxx-client/cmake/debian/rules +1 -0
- package/deps/couchbase-cxx-client/cmake/tarball_glob.txt +10 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_meter.cxx +1 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_reporter.cxx +45 -43
- package/deps/couchbase-cxx-client/core/app_telemetry_reporter.hxx +4 -3
- package/deps/couchbase-cxx-client/core/bucket.cxx +128 -13
- package/deps/couchbase-cxx-client/core/bucket.hxx +12 -2
- package/deps/couchbase-cxx-client/core/cluster.cxx +304 -152
- package/deps/couchbase-cxx-client/core/cluster.hxx +32 -0
- package/deps/couchbase-cxx-client/core/cluster_credentials.cxx +25 -0
- package/deps/couchbase-cxx-client/core/cluster_credentials.hxx +5 -0
- package/deps/couchbase-cxx-client/core/cluster_label_listener.cxx +72 -0
- package/deps/couchbase-cxx-client/core/cluster_label_listener.hxx +46 -0
- package/deps/couchbase-cxx-client/core/cluster_options.hxx +4 -0
- package/deps/couchbase-cxx-client/core/deprecation_utils.hxx +26 -0
- package/deps/couchbase-cxx-client/core/error.hxx +27 -0
- package/deps/couchbase-cxx-client/core/free_form_http_request.hxx +0 -2
- package/deps/couchbase-cxx-client/core/http_component.cxx +12 -48
- package/deps/couchbase-cxx-client/core/impl/analytics.cxx +3 -2
- package/deps/couchbase-cxx-client/core/impl/analytics.hxx +2 -1
- package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +249 -137
- package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +134 -58
- package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +87 -35
- package/deps/couchbase-cxx-client/core/impl/collection.cxx +560 -245
- package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +89 -49
- package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +3 -3
- package/deps/couchbase-cxx-client/core/impl/error.cxx +20 -13
- package/deps/couchbase-cxx-client/core/impl/error.hxx +15 -10
- package/deps/couchbase-cxx-client/core/impl/get_all_replicas.hxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/get_any_replica.hxx +2 -1
- package/deps/couchbase-cxx-client/core/impl/get_replica.hxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.hxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/observability_recorder.cxx +161 -0
- package/deps/couchbase-cxx-client/core/impl/observability_recorder.hxx +77 -0
- package/deps/couchbase-cxx-client/core/impl/observe_seqno.hxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/public_bucket.cxx +31 -7
- package/deps/couchbase-cxx-client/core/impl/public_cluster.cxx +107 -19
- package/deps/couchbase-cxx-client/core/impl/query.cxx +6 -3
- package/deps/couchbase-cxx-client/core/impl/query.hxx +3 -1
- package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +267 -102
- package/deps/couchbase-cxx-client/core/impl/scope.cxx +53 -11
- package/deps/couchbase-cxx-client/core/impl/search.cxx +8 -4
- package/deps/couchbase-cxx-client/core/impl/search.hxx +6 -2
- package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +131 -41
- package/deps/couchbase-cxx-client/core/impl/with_cancellation.hxx +75 -0
- package/deps/couchbase-cxx-client/core/io/config_tracker.cxx +9 -9
- package/deps/couchbase-cxx-client/core/io/config_tracker.hxx +2 -1
- package/deps/couchbase-cxx-client/core/io/http_command.hxx +98 -49
- package/deps/couchbase-cxx-client/core/io/http_context.hxx +2 -0
- package/deps/couchbase-cxx-client/core/io/http_session.cxx +23 -10
- package/deps/couchbase-cxx-client/core/io/http_session.hxx +17 -9
- package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +163 -228
- package/deps/couchbase-cxx-client/core/io/http_traits.hxx +0 -7
- package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +123 -44
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +251 -26
- package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +9 -1
- package/deps/couchbase-cxx-client/core/io/mcbp_traits.hxx +0 -8
- package/deps/couchbase-cxx-client/core/io/streams.cxx +3 -3
- package/deps/couchbase-cxx-client/core/io/streams.hxx +3 -2
- package/deps/couchbase-cxx-client/core/meta/features.hxx +15 -0
- package/deps/couchbase-cxx-client/core/meta/version.cxx +13 -0
- package/deps/couchbase-cxx-client/core/meta/version.hxx +3 -0
- package/deps/couchbase-cxx-client/core/metrics/constants.hxx +23 -0
- package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +5 -5
- package/deps/couchbase-cxx-client/core/metrics/meter_wrapper.cxx +65 -63
- package/deps/couchbase-cxx-client/core/metrics/meter_wrapper.hxx +12 -10
- package/deps/couchbase-cxx-client/core/operations/document_analytics.hxx +0 -5
- package/deps/couchbase-cxx-client/core/operations/document_append.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_decrement.hxx +0 -5
- package/deps/couchbase-cxx-client/core/operations/document_exists.hxx +0 -7
- package/deps/couchbase-cxx-client/core/operations/document_get.hxx +0 -7
- package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +77 -27
- package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.hxx +0 -9
- package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.hxx +0 -9
- package/deps/couchbase-cxx-client/core/operations/document_get_any_replica.hxx +83 -2
- package/deps/couchbase-cxx-client/core/operations/document_get_projected.hxx +0 -9
- package/deps/couchbase-cxx-client/core/operations/document_increment.hxx +0 -5
- package/deps/couchbase-cxx-client/core/operations/document_insert.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in.hxx +0 -9
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +46 -4
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +121 -43
- package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +0 -5
- package/deps/couchbase-cxx-client/core/operations/document_prepend.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_query.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_remove.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_replace.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_search.hxx +0 -7
- package/deps/couchbase-cxx-client/core/operations/document_touch.hxx +0 -7
- package/deps/couchbase-cxx-client/core/operations/document_unlock.hxx +0 -6
- package/deps/couchbase-cxx-client/core/operations/document_upsert.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_view.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_view.hxx +10 -13
- package/deps/couchbase-cxx-client/core/operations/http_noop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_update.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/change_password.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +4 -1
- package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/freeform.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_upsert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +68 -30
- package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +4 -3
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +2 -1
- package/deps/couchbase-cxx-client/core/operations/management/role_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_upsert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/operation_traits.hxx +6 -0
- package/deps/couchbase-cxx-client/core/operations.hxx +0 -1
- package/deps/couchbase-cxx-client/core/operations_fwd.hxx +8 -0
- package/deps/couchbase-cxx-client/core/origin.cxx +67 -12
- package/deps/couchbase-cxx-client/core/origin.hxx +13 -8
- package/deps/couchbase-cxx-client/core/orphan_reporter.cxx +164 -0
- package/deps/couchbase-cxx-client/core/orphan_reporter.hxx +65 -0
- package/deps/couchbase-cxx-client/core/sasl/CMakeLists.txt +1 -0
- package/deps/couchbase-cxx-client/core/sasl/client.cc +6 -0
- package/deps/couchbase-cxx-client/core/sasl/mechanism.cc +2 -1
- package/deps/couchbase-cxx-client/core/sasl/mechanism.h +2 -1
- package/deps/couchbase-cxx-client/core/sasl/oauthbearer/oauthbearer.cc +41 -0
- package/deps/couchbase-cxx-client/core/sasl/oauthbearer/oauthbearer.h +47 -0
- package/deps/couchbase-cxx-client/core/tls_context_provider.cxx +44 -0
- package/deps/couchbase-cxx-client/core/tls_context_provider.hxx +44 -0
- package/deps/couchbase-cxx-client/core/tracing/attribute_helpers.hxx +45 -0
- package/deps/couchbase-cxx-client/core/tracing/constants.hxx +148 -68
- package/deps/couchbase-cxx-client/core/tracing/threshold_logging_options.hxx +0 -3
- package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +122 -170
- package/deps/couchbase-cxx-client/core/tracing/tracer_wrapper.cxx +17 -24
- package/deps/couchbase-cxx-client/core/tracing/tracer_wrapper.hxx +8 -10
- package/deps/couchbase-cxx-client/core/tracing/wrapper_sdk_tracer.cxx +114 -0
- package/deps/couchbase-cxx-client/core/tracing/wrapper_sdk_tracer.hxx +85 -0
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +16 -14
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +4 -4
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +1 -1
- package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +1 -2
- package/deps/couchbase-cxx-client/core/utils/byteswap.hxx +12 -0
- package/deps/couchbase-cxx-client/core/utils/concurrent_fixed_priority_queue.hxx +102 -0
- package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +2 -0
- package/deps/couchbase-cxx-client/couchbase/certificate_authenticator.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/cluster.hxx +47 -0
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/collection.hxx +60 -15
- package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +48 -48
- package/deps/couchbase-cxx-client/couchbase/jwt_authenticator.hxx +52 -0
- package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +2 -1
- package/deps/couchbase-cxx-client/couchbase/metrics/otel_meter.hxx +75 -80
- package/deps/couchbase-cxx-client/couchbase/network_options.hxx +19 -0
- package/deps/couchbase-cxx-client/couchbase/password_authenticator.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/tracing/otel_tracer.hxx +15 -17
- package/deps/couchbase-cxx-client/couchbase/tracing/request_span.hxx +2 -2
- package/dist/analyticsexecutor.d.ts +15 -0
- package/dist/analyticsexecutor.js +79 -50
- package/dist/analyticsindexmanager.d.ts +66 -0
- package/dist/analyticsindexmanager.js +404 -277
- package/dist/analyticstypes.d.ts +5 -0
- package/dist/authenticators.d.ts +34 -1
- package/dist/authenticators.js +19 -1
- package/dist/binarycollection.d.ts +17 -0
- package/dist/binding.d.ts +245 -228
- package/dist/bindingutilities.js +1 -1
- package/dist/bucket.d.ts +8 -0
- package/dist/bucket.js +8 -0
- package/dist/bucketmanager.d.ts +30 -0
- package/dist/bucketmanager.js +128 -69
- package/dist/cluster.d.ts +45 -0
- package/dist/cluster.js +133 -21
- package/dist/collection.d.ts +75 -2
- package/dist/collection.js +772 -551
- package/dist/collectionmanager.d.ts +34 -0
- package/dist/collectionmanager.js +172 -89
- package/dist/couchbase.d.ts +5 -0
- package/dist/couchbase.js +5 -0
- package/dist/datastructures.js +310 -97
- package/dist/errors.d.ts +8 -0
- package/dist/errors.js +12 -1
- package/dist/eventingfunctionmanager.d.ts +42 -0
- package/dist/eventingfunctionmanager.js +172 -100
- package/dist/logger.d.ts +192 -0
- package/dist/logger.js +213 -0
- package/dist/loggingmeter.d.ts +120 -0
- package/dist/loggingmeter.js +226 -0
- package/dist/metrics.d.ts +33 -0
- package/dist/metrics.js +5 -0
- package/dist/observability.d.ts +60 -0
- package/dist/observability.js +86 -0
- package/dist/observabilityhandler.d.ts +176 -0
- package/dist/observabilityhandler.js +733 -0
- package/dist/observabilitytypes.d.ts +320 -0
- package/dist/observabilitytypes.js +362 -0
- package/dist/observabilityutilities.d.ts +60 -0
- package/dist/observabilityutilities.js +175 -0
- package/dist/otelmeter.d.ts +51 -0
- package/dist/otelmeter.js +100 -0
- package/dist/oteltracer.d.ts +69 -0
- package/dist/oteltracer.js +141 -0
- package/dist/queryexecutor.d.ts +16 -0
- package/dist/queryexecutor.js +128 -86
- package/dist/queryindexmanager.d.ts +29 -0
- package/dist/queryindexmanager.js +277 -150
- package/dist/querytypes.d.ts +5 -0
- package/dist/scope.js +2 -2
- package/dist/scopeeventingfunctionmanager.d.ts +5 -0
- package/dist/scopeeventingfunctionmanager.js +217 -119
- package/dist/scopesearchindexmanager.d.ts +5 -0
- package/dist/scopesearchindexmanager.js +295 -166
- package/dist/sdspecs.js +6 -1
- package/dist/searchexecutor.d.ts +15 -0
- package/dist/searchexecutor.js +54 -26
- package/dist/searchindexmanager.d.ts +54 -0
- package/dist/searchindexmanager.js +235 -142
- package/dist/searchtypes.d.ts +5 -0
- package/dist/thresholdlogging.d.ts +301 -0
- package/dist/thresholdlogging.js +657 -0
- package/dist/tracing.d.ts +55 -0
- package/dist/tracing.js +2 -0
- package/dist/usermanager.d.ts +46 -0
- package/dist/usermanager.js +199 -118
- package/dist/utilities.d.ts +4 -0
- package/dist/utilities.js +11 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.js +7 -0
- package/dist/viewexecutor.d.ts +15 -0
- package/dist/viewexecutor.js +54 -29
- package/dist/viewindexmanager.d.ts +30 -0
- package/dist/viewindexmanager.js +129 -100
- package/dist/viewtypes.d.ts +5 -0
- package/package.json +19 -9
- package/scripts/prebuilds.js +1 -1
- package/scripts/updateVersion.js +26 -0
- package/src/connection.cpp +79 -98
- package/src/connection.hpp +46 -38
- package/src/connection_autogen.cpp +1236 -292
- package/src/jstocbpp_autogen.hpp +1117 -313
- package/src/jstocbpp_basic.hpp +73 -0
- package/src/jstocbpp_defs.hpp +37 -9
- package/src/jstocbpp_errors.hpp +37 -11
- package/tools/gen-bindings-js.js +100 -22
- package/tools/gen-bindings-json.py +40 -6
- package/src/transcoder.hpp +0 -96
package/src/jstocbpp_basic.hpp
CHANGED
|
@@ -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
|
package/src/jstocbpp_defs.hpp
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
#include <napi.h>
|
|
3
3
|
|
|
4
|
-
#include
|
|
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(
|
|
32
|
-
|
|
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,
|
|
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(
|
|
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,
|
|
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
|
|
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>::
|
|
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
|
package/src/jstocbpp_errors.hpp
CHANGED
|
@@ -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,
|
|
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
|
|
194
|
-
|
|
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
|
};
|
package/tools/gen-bindings-js.js
CHANGED
|
@@ -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 === '
|
|
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
|
-
|
|
345
|
-
|
|
346
|
-
opReqTypes.push(
|
|
365
|
+
const reqName = getOpReqName(opStruct.name)
|
|
366
|
+
if (reqName) {
|
|
367
|
+
opReqTypes.push(reqName)
|
|
347
368
|
}
|
|
348
|
-
|
|
349
|
-
|
|
369
|
+
// handle tracing for requests
|
|
370
|
+
if (opStruct.fields.some((f) => f.name === 'parent_span')) {
|
|
371
|
+
opStructReqsWithTracing.push(opStruct.name)
|
|
350
372
|
}
|
|
351
|
-
|
|
352
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
390
|
-
if (
|
|
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}>(
|
|
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}>(
|
|
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(`
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
486
|
-
cpm_hash_dir =
|
|
487
|
-
|
|
488
|
-
|
|
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))
|