UNPKG

@dittolive/ditto

Version:

Ditto is a cross-platform SDK that allows apps to sync with and even without internet connectivity.

1 lines • 123 kB
import{NativeModules,Platform}from"react-native";const REGISTRY_SWEEP_INTERVAL=1e4;class WeakRefBasedFinalizationRegistry{[Symbol.toStringTag]="FinalizationRegistry";counter=0;registrations=new Map;constructor(e){this.finalize=e}register(e,t,i){this.registrations.set(this.counter,{targetRef:new WeakRef(e),tokenRef:i?new WeakRef(i):void 0,value:t}),this.counter++,this.scheduleSweep()}unregister(e){if(!e)return!1;let t=!1;return this.registrations.forEach(((i,n)=>{i.tokenRef?.deref()===e&&(this.registrations.delete(n),t=!0)})),t}sweep=()=>{clearTimeout(this.sweepTimeout),this.sweepTimeout=void 0,this.registrations.forEach(((e,t)=>{if(void 0!==e.targetRef.deref())return;const i=e.value;this.registrations.delete(t),this.finalize(i)})),this.registrations.size>0&&this.scheduleSweep()};scheduleSweep(){this.sweepTimeout||(this.sweepTimeout=setTimeout(this.sweep,1e4))}}class WeakRefMock{[Symbol.toStringTag]="WeakRef";constructor(e){this.target=e}deref(){return this.target}static get[Symbol.toStringTag](){return"WeakRef"}}!function(e){function x(){}function y(){}var t=String.fromCharCode,i={}.toString,n=i.call(e.SharedArrayBuffer),r=i(),o=e.Uint8Array,s=o||Array,a=o?ArrayBuffer:s,c=a.isView||function(e){return e&&"length"in e},d=i.call(a.prototype);a=y.prototype;var l=e.TextEncoder,u=e.TextDecoder,f=new(o?Uint16Array:s)(32);x.prototype.decode=function(e){if(!c(e)){var a=i.call(e);if(a!==d&&a!==n&&a!==r)throw TypeError("Failed to execute 'decode' on 'TextDecoder': The provided value is not of type '(ArrayBuffer or ArrayBufferView)'");e=o?new s(e):e||[]}for(var l,u,h,_=a="",g=0,p=0|e.length,m=p-32|0,b=0,w=0,v=0,I=-1;g<p;){for(l=g<=m?32:p-g|0;v<l;g=g+1|0,v=v+1|0){switch((u=255&e[g])>>4){case 15:if(2!=(h=255&e[g=g+1|0])>>6||247<u){g=g-1|0;break}b=(7&u)<<6|63&h,w=5,u=256;case 14:b<<=6,b|=(15&u)<<6|63&(h=255&e[g=g+1|0]),w=2==h>>6?w+4|0:24,u=u+256&768;case 13:case 12:b<<=6,b|=(31&u)<<6|63&(h=255&e[g=g+1|0]),w=w+7|0,g<p&&2==h>>6&&b>>w&&1114112>b?(u=b,0<=(b=b-65536|0)&&(I=55296+(b>>10)|0,u=56320+(1023&b)|0,31>v?(f[v]=I,v=v+1|0,I=-1):(h=I,I=u,u=h))):(g=g-(u>>=8)-1|0,u=65533),b=w=0,l=g<=m?32:p-g|0;default:f[v]=u;continue;case 11:case 10:case 9:case 8:}f[v]=65533}if(_+=t(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8],f[9],f[10],f[11],f[12],f[13],f[14],f[15],f[16],f[17],f[18],f[19],f[20],f[21],f[22],f[23],f[24],f[25],f[26],f[27],f[28],f[29],f[30],f[31]),32>v&&(_=_.slice(0,v-32|0)),g<p){if(f[0]=I,v=~I>>>31,I=-1,_.length<a.length)continue}else-1!==I&&(_+=t(I));a+=_,_=""}return a},a.encode=function(e){var t,i=0|(e=void 0===e?"":""+e).length,n=new s(8+(i<<1)|0),r=0,a=!o;for(t=0;t<i;t=t+1|0,r=r+1|0){var c=0|e.charCodeAt(t);if(127>=c)n[r]=c;else{if(2047>=c)n[r]=192|c>>6;else{e:{if(55296<=c)if(56319>=c){var d=0|e.charCodeAt(t=t+1|0);if(56320<=d&&57343>=d){if(65535<(c=(c<<10)+d-56613888|0)){n[r]=240|c>>18,n[r=r+1|0]=128|c>>12&63,n[r=r+1|0]=128|c>>6&63,n[r=r+1|0]=128|63&c;continue}break e}c=65533}else 57343>=c&&(c=65533);!a&&t<<1<r&&t<<1<(r-7|0)&&(a=!0,(d=new s(3*i)).set(n),n=d)}n[r]=224|c>>12,n[r=r+1|0]=128|c>>6&63}n[r=r+1|0]=128|63&c}}return o?n.subarray(0,r):n.slice(0,r)},l||(e.TextEncoder=y),u||(e.TextDecoder=x)}(""+void 0==typeof global?""+void 0==typeof self?void 0:self:global);const dittoCore=global,isLoaded="function"==typeof dittoCore.ditto_sdk_transports_init;if(!isLoaded){const e=NativeModules.DittoRNSDK?.install();if(!e)throw new Error("JSI bindings were not installed for: DittoRNSDK Module");Platform.constants.reactNativeVersion.minor<=75&&setInterval((()=>{dittoCore.ditto_tick()}),50),"undefined"==typeof WeakRef&&(global.WeakRef=WeakRefMock),void 0===global.FinalizationRegistry&&(global.FinalizationRegistry=WeakRefBasedFinalizationRegistry);const t=Platform.select({ios:"Ios",android:"Android",default:"Unknown"});dittoCore.ditto_init_sdk_version(t,"JavaScript","4.11.0")}function ditto_sdk_transports_init(e){if("android"===Platform.OS){if(!dittoCore.ditto_sdk_transports_set_android_context())throw new Error("Couldn't manage to set Android context with `ditto_sdk_transports_set_android_context()`")}return dittoCore.ditto_sdk_transports_init(e)}function getMissingAndroidPermissions(){return"android"!==Platform.OS?[]:dittoCore.ditto_sdk_transports_android_missing_permissions()}function boxCBytesIntoBuffer(e){const t=dittoCore.sliceBoxedToUInt8Array(e);return t?new Uint8Array(t):null}function refCBytesIntoBuffer(e){const t=dittoCore.sliceRefToUInt8Array(e);return t?new Uint8Array(t):null}function dittoffi_differ_diff(...e){return boxCBytesIntoBuffer(dittoCore.dittoffi_differ_diff(...e))}function ditto_identity_config_make_online_playground(...e){return dittoCore.ditto_identity_config_make_online_playground(...e)}function ditto_identity_config_make_offline_playground(...e){return dittoCore.ditto_identity_config_make_offline_playground(...e)}function ditto_identity_config_make_shared_key(...e){return dittoCore.ditto_identity_config_make_shared_key(...e)}function ditto_identity_config_make_online_with_authentication(...e){return dittoCore.ditto_identity_config_make_online_with_authentication(...e)}function dittoffi_ditto_try_new_blocking(...e){return dittoCore.dittoffi_ditto_try_new_blocking(...e)}function ditto_shutdown(...e){return dittoCore.ditto_shutdown(...e)}function ditto_free(...e){return dittoCore.ditto_free(...e)}function dittoffi_ditto_is_activated(...e){return dittoCore.dittoffi_ditto_is_activated(...e)}function dittoffi_ditto_is_sync_active(...e){return dittoCore.dittoffi_ditto_is_sync_active(...e)}function dittoffi_ditto_try_start_sync(...e){return dittoCore.dittoffi_ditto_try_start_sync(...e)}function dittoffi_ditto_stop_sync(...e){return dittoCore.dittoffi_ditto_stop_sync(...e)}function dittoffi_ditto_try_set_transport_config(...e){return dittoCore.dittoffi_ditto_try_set_transport_config(...e)}function dittoffi_ditto_transport_config(...e){return dittoCore.dittoffi_ditto_transport_config(...e)}function dittoffi_ditto_set_cloud_sync_enabled(...e){return dittoCore.dittoffi_ditto_set_cloud_sync_enabled(...e)}function refCStringToString(...e){return dittoCore.refCStringToString(...e)}function boxCStringIntoString(...e){return dittoCore.boxCStringIntoString(...e)}function withOutBoxCBytes(...e){return dittoCore.withOutBoxCBytes(...e)}function ditto_auth_client_get_app_id(...e){return dittoCore.ditto_auth_client_get_app_id(...e)}function ditto_auth_client_is_web_valid(...e){return dittoCore.ditto_auth_client_is_web_valid(...e)}function ditto_auth_client_get_site_id(...e){return dittoCore.ditto_auth_client_get_site_id(...e)}function ditto_auth_client_make_login_provider(...e){return dittoCore.ditto_auth_client_make_login_provider(...e)}function ditto_auth_set_login_provider(...e){return dittoCore.ditto_auth_set_login_provider(...e)}function ditto_auth_client_login_with_token(...e){return dittoCore.ditto_auth_client_login_with_token(...e)}function ditto_auth_client_login_with_token_and_feedback(...e){return dittoCore.ditto_auth_client_login_with_token_and_feedback(...e)}function ditto_auth_client_login_with_credentials(...e){return dittoCore.ditto_auth_client_login_with_credentials(...e)}function ditto_auth_client_logout(...e){return dittoCore.ditto_auth_client_logout(...e)}function ditto_auth_client_user_id(...e){return dittoCore.ditto_auth_client_user_id(...e)}function dittoffi_ditto_set_authentication_status_handler(...e){return dittoCore.dittoffi_ditto_set_authentication_status_handler(...e)}function dittoffi_authentication_status_is_authenticated(...e){return dittoCore.dittoffi_authentication_status_is_authenticated(...e)}function dittoffi_authentication_status_user_id(...e){return dittoCore.dittoffi_authentication_status_user_id(...e)}function dittoffi_authentication_status_free(...e){return dittoCore.dittoffi_authentication_status_free(...e)}function dittoffi_try_experimental_register_change_observer_str_detached(...e){return dittoCore.dittoffi_try_experimental_register_change_observer_str_detached(...e)}function dittoffi_try_add_sync_subscription(...e){return dittoCore.dittoffi_try_add_sync_subscription(...e)}function dittoffi_try_remove_sync_subscription(...e){return dittoCore.dittoffi_try_remove_sync_subscription(...e)}function dittoffi_try_exec_statement(...e){return dittoCore.dittoffi_try_exec_statement(...e)}function dittoffi_query_result_item_count(...e){return dittoCore.dittoffi_query_result_item_count(...e)}function dittoffi_query_result_item_at(...e){return dittoCore.dittoffi_query_result_item_at(...e)}function dittoffi_query_result_item_new(...e){return dittoCore.dittoffi_query_result_item_new(...e)}function dittoffi_query_result_mutated_document_id_count(...e){return dittoCore.dittoffi_query_result_mutated_document_id_count(...e)}function dittoffi_query_result_mutated_document_id_at(...e){return dittoCore.dittoffi_query_result_mutated_document_id_at(...e)}function dittoffi_query_result_item_cbor(...e){return dittoCore.dittoffi_query_result_item_cbor(...e)}function dittoffi_query_result_item_json(...e){return dittoCore.dittoffi_query_result_item_json(...e)}function ditto_document_id_query_compatible(...e){return dittoCore.ditto_document_id_query_compatible(...e)}function ditto_document_id(...e){return dittoCore.ditto_document_id(...e)}function ditto_document_free(...e){return dittoCore.ditto_document_free(...e)}function ditto_validate_document_id(...e){return dittoCore.ditto_validate_document_id(...e)}function ditto_presence_v3(...e){return dittoCore.ditto_presence_v3(...e)}function ditto_register_presence_v3_callback(...e){return dittoCore.ditto_register_presence_v3_callback(...e)}function ditto_clear_presence_v3_callback(...e){return dittoCore.ditto_clear_presence_v3_callback(...e)}function dittoffi_presence_peer_metadata_json(...e){return dittoCore.dittoffi_presence_peer_metadata_json(...e)}function dittoffi_presence_try_set_peer_metadata_json(...e){return dittoCore.dittoffi_presence_try_set_peer_metadata_json(...e)}function dittoffi_presence_set_connection_request_handler(...e){return dittoCore.dittoffi_presence_set_connection_request_handler(...e)}function ditto_new_attachment_from_file(...e){return dittoCore.ditto_new_attachment_from_file(...e)}function ditto_new_attachment_from_bytes(...e){return dittoCore.ditto_new_attachment_from_bytes(...e)}function ditto_resolve_attachment(...e){return dittoCore.ditto_resolve_attachment(...e)}function ditto_cancel_resolve_attachment(...e){return dittoCore.ditto_cancel_resolve_attachment(...e)}function ditto_free_attachment_handle(...e){return dittoCore.ditto_free_attachment_handle(...e)}function ditto_get_complete_attachment_path(...e){return dittoCore.ditto_get_complete_attachment_path(...e)}function ditto_live_query_start(...e){return dittoCore.ditto_live_query_start(...e)}function ditto_live_query_stop(...e){return dittoCore.ditto_live_query_stop(...e)}function ditto_live_query_signal_available_next(...e){return dittoCore.ditto_live_query_signal_available_next(...e)}function ditto_log(...e){return dittoCore.ditto_log(...e)}function ditto_logger_init(...e){return dittoCore.ditto_logger_init(...e)}function ditto_logger_set_log_file(...e){return dittoCore.ditto_logger_set_log_file(...e)}function ditto_logger_minimum_log_level_get(...e){return dittoCore.ditto_logger_minimum_log_level_get(...e)}function ditto_logger_minimum_log_level(...e){return dittoCore.ditto_logger_minimum_log_level(...e)}function ditto_logger_emoji_headings_enabled_get(...e){return dittoCore.ditto_logger_emoji_headings_enabled_get(...e)}function ditto_logger_emoji_headings_enabled(...e){return dittoCore.ditto_logger_emoji_headings_enabled(...e)}function ditto_logger_enabled_get(...e){return dittoCore.ditto_logger_enabled_get(...e)}function ditto_logger_enabled(...e){return dittoCore.ditto_logger_enabled(...e)}function ditto_small_peer_info_get_is_enabled(...e){return dittoCore.ditto_small_peer_info_get_is_enabled(...e)}function ditto_small_peer_info_set_enabled(...e){return dittoCore.ditto_small_peer_info_set_enabled(...e)}function ditto_small_peer_info_get_sync_scope(...e){return dittoCore.ditto_small_peer_info_get_sync_scope(...e)}function ditto_small_peer_info_set_sync_scope(...e){return dittoCore.ditto_small_peer_info_set_sync_scope(...e)}function ditto_small_peer_info_get_metadata(...e){return dittoCore.ditto_small_peer_info_get_metadata(...e)}function ditto_small_peer_info_set_metadata(...e){return dittoCore.ditto_small_peer_info_set_metadata(...e)}function ditto_sdk_transports_error_new(...e){return dittoCore.ditto_sdk_transports_error_new(...e)}function ditto_sdk_transports_error_value(...e){return dittoCore.ditto_sdk_transports_error_value(...e)}function ditto_sdk_transports_error_free(...e){return dittoCore.ditto_sdk_transports_error_free(...e)}function dittoffi_connection_request_peer_key_string(...e){return dittoCore.dittoffi_connection_request_peer_key_string(...e)}function dittoffi_connection_request_peer_metadata_json(...e){return dittoCore.dittoffi_connection_request_peer_metadata_json(...e)}function dittoffi_connection_request_authorize(...e){return dittoCore.dittoffi_connection_request_authorize(...e)}function dittoffi_connection_request_free(...e){return dittoCore.dittoffi_connection_request_free(...e)}function dittoffi_connection_request_connection_type(...e){return dittoCore.dittoffi_connection_request_connection_type(...e)}function ditto_set_device_name(...e){return dittoCore.ditto_set_device_name(...e)}function ditto_get_sdk_version(...e){return dittoCore.ditto_get_sdk_version(...e)}function dittoffi_get_sdk_semver(...e){return dittoCore.dittoffi_get_sdk_semver(...e)}function ditto_error_message(...e){return dittoCore.ditto_error_message(...e)}function dittoffi_error_code(...e){return dittoCore.dittoffi_error_code(...e)}function dittoffi_error_description(...e){return dittoCore.dittoffi_error_description(...e)}function dittoffi_error_free(...e){return dittoCore.dittoffi_error_free(...e)}function dittoffi_try_verify_license(...e){return dittoCore.dittoffi_try_verify_license(...e)}function ditto_run_garbage_collection(...e){return dittoCore.ditto_run_garbage_collection(...e)}function ditto_disable_sync_with_v3(...e){return dittoCore.ditto_disable_sync_with_v3(...e)}function dittoffi_base64_encode(...e){return dittoCore.dittoffi_base64_encode(...e)}function dittoffi_try_base64_decode(...e){return dittoCore.dittoffi_try_base64_decode(...e)}function dittoffi_crypto_generate_secure_random_token(...e){return dittoCore.dittoffi_crypto_generate_secure_random_token(...e)}function readFile$1(...e){return dittoCore.readFile(...e)}function copyFile$1(...e){return dittoCore.copyFile(...e)}function createDirectory$1(...e){return dittoCore.createDirectory(...e)}function defaultDeviceName$1(...e){return dittoCore.defaultDeviceName(...e)}function dittoffi_logger_try_export_to_file_async(...e){return dittoCore.dittoffi_logger_try_export_to_file_async(...e)}function ditto_logger_set_custom_log_cb(...e){return dittoCore.ditto_logger_set_custom_log_cb(...e)}function dittoffi_query_result_free(...e){return dittoCore.dittoffi_query_result_free(...e)}function dittoffi_query_result_item_free(...e){return dittoCore.dittoffi_query_result_item_free(...e)}function ditto_register_presence_v1_callback(...e){return dittoCore.ditto_register_presence_v1_callback(...e)}function ditto_clear_presence_callback(...e){return dittoCore.ditto_clear_presence_callback(...e)}function ditto_presence_v1(...e){return dittoCore.ditto_presence_v1(...e)}function dittoffi_differ_new(...e){return dittoCore.dittoffi_differ_new(...e)}function dittoffi_differ_free(...e){return dittoCore.dittoffi_differ_free(...e)}function dittoffi_store_transactions(...e){return dittoCore.dittoffi_store_transactions(...e)}function dittoffi_store_begin_transaction_async_throws(...e){return dittoCore.dittoffi_store_begin_transaction_async_throws(...e)}function dittoffi_transaction_complete_async_throws(...e){return dittoCore.dittoffi_transaction_complete_async_throws(...e)}function dittoffi_transaction_execute_async_throws(...e){return dittoCore.dittoffi_transaction_execute_async_throws(...e)}function dittoffi_transaction_info(...e){return dittoCore.dittoffi_transaction_info(...e)}function dittoffi_transaction_free(...e){return dittoCore.dittoffi_transaction_free(...e)}function ditto_register_transport_condition_changed_callback(...e){return dittoCore.ditto_register_transport_condition_changed_callback(...e)}function ditto_add_subscription(){throw new Error("ditto_add_subscription is not implemented in React Native.")}function ditto_remove_subscription(){throw new Error("ditto_remove_subscription is not implemented in React Native.")}function dittoffi_connection_request_identity_service_metadata_json(){throw new Error("Not implemented in React Native.")}const PREFIX_REGEX=new RegExp(/^<.*?>\s*/);class DittoFFIError extends Error{constructor(e,t,i){const n=ffiErrorMessage();super(t||n||i),this.code=e}}function throwOnErrorResult(e,t){if(null!==e){let i,n;try{i=dittoffi_error_code(e),n=boxCStringIntoString(dittoffi_error_description(e)),dittoffi_error_free(e)}catch(e){throw new DittoFFIError(-1,`Failed to retrieve Ditto core error message: ${e.message}`)}throw n=null==n?`${t}() failed with error code: ${i}`:n.replace(PREFIX_REGEX,""),new DittoFFIError(i,n)}}function ffiErrorMessage(){return boxCStringIntoString(ditto_error_message())}const DittoCRDTTypeKey="_ditto_internal_type_jkb12973t4b",DittoCRDTValueKey="_value";var DittoCRDTType;function differNew(){return ensureInitialized(),dittoffi_differ_new()}function differDiff(e,t){return ensureInitialized(),dittoffi_differ_diff(e,t)}function differFree(e){ensureInitialized(),dittoffi_differ_free(e)}function dittoPointerToStorePointer(e){return{addr:e.addr,type:"dittoffi_store_t const *"}}function documentID(e){ensureInitialized();return boxCBytesIntoBuffer(ditto_document_id(e))}function documentFree(e){ensureInitialized(),ditto_document_free(e)}function documentIDQueryCompatible(e,t){ensureInitialized();return boxCStringIntoString(ditto_document_id_query_compatible(e,t))}function validateDocumentID(e){ensureInitialized();return boxCBytesIntoBuffer(withOutBoxCBytes((t=>{const i=ditto_validate_document_id(e,t);if(0!==i)throw new Error(errorMessage()||`ditto_validate_document_id() failed with error code: ${i}`);return t})))}async function tryExecStatement(e,t,i){ensureInitialized();const n=bytesFromString(t),r=await dittoffi_try_exec_statement(e,n,i);return throwOnErrorResult(r.error,"dittoffi_try_exec_statement"),r.success}function addSubscription(e,t,i,n,r,o,s){ensureInitialized(),bytesFromString(t),bytesFromString(i);const a=ditto_add_subscription();if(0!==a)throw new Error(errorMessage()||`ditto_add_subscription() failed with error code: ${a}`)}function removeSubscription(e,t,i,n,r,o,s){ensureInitialized(),bytesFromString(t),bytesFromString(i);const a=ditto_remove_subscription();if(0!==a)throw new Error(errorMessage()||`ditto_remove_subscription() failed with error code: ${a}`)}function tryAddSyncSubscription(e,t,i){ensureInitialized();throwOnErrorResult(dittoffi_try_add_sync_subscription(e,bytesFromString(t),i).error,"dittoffi_try_add_sync_subscription")}function tryRemoveSyncSubscription(e,t,i){ensureInitialized();throwOnErrorResult(dittoffi_try_remove_sync_subscription(e,bytesFromString(t),i).error,"dittoffi_try_remove_sync_subscription")}function queryResultFree(e){ensureInitialized(),dittoffi_query_result_free(e)}function queryResultItemFree(e){ensureInitialized(),dittoffi_query_result_item_free(e)}function queryResultItems(e){ensureInitialized();const t=[],i=dittoffi_query_result_item_count(e);for(let n=0;n<i;n++)t.push(dittoffi_query_result_item_at(e,n));return t}function queryResultMutatedDocumentIDs(e){ensureInitialized();const t=[],i=dittoffi_query_result_mutated_document_id_count(e);for(let n=0;n<i;n++){const i=dittoffi_query_result_mutated_document_id_at(e,n);t.push(boxCBytesIntoBuffer(i))}return t}function queryResultItemCBOR(e){ensureInitialized();return boxCBytesIntoBuffer(dittoffi_query_result_item_cbor(e))}function queryResultItemJSON(e){ensureInitialized();return boxCStringIntoString(dittoffi_query_result_item_json(e))}function queryResultItemNew(e){ensureInitialized();const t=dittoffi_query_result_item_new(e);return throwOnErrorResult(t.error,"dittoffi_query_result_item_new"),t.success}function tryExperimentalRegisterChangeObserver(e,t,i,n){ensureInitialized();const r=wrapBackgroundCbForFFI((e=>log("Error",`The registered store observer callback failed with ${e}`)),n),o=dittoffi_try_experimental_register_change_observer_str_detached(e,bytesFromString(t),i,r);return throwOnErrorResult(o.error,"dittoffi_try_experimental_register_change_observer_str_detached"),o.success}async function liveQueryStart(e,t){ensureInitialized();const i=await ditto_live_query_start(e,t);if(0!==i)throw new Error(errorMessage()||`\`ditto_live_query_start()\` failed with error code: ${i}`)}function liveQueryStop(e,t){ensureInitialized(),ditto_live_query_stop(e,t)}async function liveQuerySignalAvailableNext(e,t){ensureInitialized(),await ditto_live_query_signal_available_next(e,t)}function loggerInit(){ensureInitialized(),ditto_logger_init()}async function loggerSetCustomLogCb(e){if(ensureInitialized(),null===e)await ditto_logger_set_custom_log_cb(null);else{const t=wrapBackgroundCbForFFI(null,((t,i)=>{try{const n=boxCStringIntoString(i);e(t,n)}catch(e){log("Error",`The registered cb in \`ditto_logger_set_custom_log_cb()\` failed with: ${e}`)}}));await ditto_logger_set_custom_log_cb(t)}}function loggerEnabled(e){ensureInitialized(),ditto_logger_enabled(!!e)}function loggerEnabledGet(){return ensureInitialized(),!!ditto_logger_enabled_get()}function loggerEmojiHeadingsEnabled(e){ensureInitialized(),ditto_logger_emoji_headings_enabled(e)}function loggerEmojiHeadingsEnabledGet(){return ensureInitialized(),ditto_logger_emoji_headings_enabled_get()}function loggerMinimumLogLevel(e){ensureInitialized(),ditto_logger_minimum_log_level(e)}function loggerMinimumLogLevelGet(){return ensureInitialized(),ditto_logger_minimum_log_level_get()}function loggerSetLogFile(e){ensureInitialized();if(0!==ditto_logger_set_log_file(e?bytesFromString(e):null)){const e=errorMessage();throw new Error(`Can't set log file, due to error: ${e}`)}}async function loggerTryExportToFileAsync(e){ensureInitialized();const t=bytesFromString(e),i=await new Promise(((e,i)=>{const n=wrapBackgroundCbForFFI(i,e);dittoffi_logger_try_export_to_file_async(t,n)}));return throwOnErrorResult(i.error,"dittoffi_logger_try_export_to_file_async"),i.success}function log(e,t){ensureInitialized();ditto_log(e,bytesFromString(t))}function dittoIdentityConfigMakeOnlinePlayground(e,t,i){ensureInitialized();const n=bytesFromString(e),r=bytesFromString(t),o=bytesFromString(i),{status_code:s,identity_config:a}=ditto_identity_config_make_online_playground(n,r,o);if(0!==s)throw new Error(errorMessage()||`ditto_identity_config_make_online_playground() failed with error code: ${s}`);return a}function dittoIdentityConfigMakeOnlineWithAuthentication(e,t){ensureInitialized();const i=bytesFromString(e),n=bytesFromString(t),{status_code:r,identity_config:o}=ditto_identity_config_make_online_with_authentication(i,n);if(0!==r)throw new Error(errorMessage()||`ditto_identity_config_make_online_with_authentication() failed with error code: ${r}`);return o}function dittoIdentityConfigMakeOfflinePlayground(e,t){ensureInitialized();const i=bytesFromString(e),n=Number(t),{status_code:r,identity_config:o}=ditto_identity_config_make_offline_playground(i,n);if(0!==r)throw new Error(errorMessage()||`ditto_identity_config_make_offline_playground() failed with error code: ${r}`);return o}function dittoIdentityConfigMakeSharedKey(e,t,i){ensureInitialized();const n=bytesFromString(e),r=bytesFromString(t),o=Number(i),{status_code:s,identity_config:a}=ditto_identity_config_make_shared_key(n,r,o);if(0!==s)throw new Error(errorMessage()||`ditto_identity_config_make_shared_key() failed with error code: ${s}`);return a}function dittoAuthClientGetSiteID(e){return ensureInitialized(),ditto_auth_client_get_site_id(e)}function dittoAuthClientGetAppID(e){ensureInitialized();return boxCStringIntoString(ditto_auth_client_get_app_id(e))}function dittoAuthClientUserID(e){ensureInitialized();return boxCStringIntoString(ditto_auth_client_user_id(e))}function dittoAuthClientIsWebValid(e){return ensureInitialized(),0!==ditto_auth_client_is_web_valid(e)}async function dittoAuthClientLoginWithTokenAndFeedback(e,t,i){ensureInitialized();const n=bytesFromString(t),r=bytesFromString(i),o=await ditto_auth_client_login_with_token_and_feedback(e,n,r);return{error:0===o.status_code?null:new DittoFFIError(o.status_code,void 0,"Ditto failed to authenticate."),clientInfo:o.c_string?boxCStringIntoString(o.c_string):null}}async function dittoAuthClientLoginWithToken(e,t,i){ensureInitialized();const n=bytesFromString(t),r=bytesFromString(i),o=await ditto_auth_client_login_with_token(e,n,r);if(0!==o)throw new Error(errorMessage()||`Ditto failed to authenticate (error code: ${o}).`)}async function dittoAuthClientLoginWithUsernameAndPassword(e,t,i,n){ensureInitialized();const r=bytesFromString(t),o=bytesFromString(i),s=bytesFromString(n),a=await ditto_auth_client_login_with_credentials(e,r,o,s);if(0!==a)throw new Error(errorMessage()||`Ditto failed to authenticate (error code: ${a}).`)}async function dittoAuthClientLogout(e){ensureInitialized();const t=await ditto_auth_client_logout(e);if(0!==t)throw new Error(errorMessage()||`Ditto failed to logout (error code: ${t}).`)}function dittoSetAuthenticationStatusHandler(e,t,i){ensureInitialized(),dittoffi_ditto_set_authentication_status_handler(e,wrapBackgroundCbForFFI(i,t))}function authenticationStatusUserID(e){return ensureInitialized(),boxCStringIntoString(dittoffi_authentication_status_user_id(e))}function authenticationStatusIsAuthenticated(e){return ensureInitialized(),dittoffi_authentication_status_is_authenticated(e)}function authenticationStatusFree(e){ensureInitialized(),dittoffi_authentication_status_free(e)}function storeTransactions(e){ensureInitialized();return boxCBytesIntoBuffer(dittoffi_store_transactions(e))}async function storeBeginTransaction(e,t){ensureInitialized();const i={is_read_only:t.isReadOnly,hint:bytesFromString(t.hint)};return new Promise(((t,n)=>{const r=wrapBackgroundCbForFFI(n,(e=>{throwOnErrorResult(e.error,"dittoffi_store_begin_transaction_async_throws"),t(e.success)}));dittoffi_store_begin_transaction_async_throws(e,i,r)}))}async function transactionCompleteAsync(e,t){return ensureInitialized(),new Promise(((i,n)=>{const r=wrapBackgroundCbForFFI(n,(e=>{throwOnErrorResult(e.error,"dittoffi_transaction_complete_async_throws");const t=e.success;i(t)}));dittoffi_transaction_complete_async_throws(e,t,r)}))}async function transactionExecuteAsync(e,t,i){return ensureInitialized(),new Promise(((n,r)=>{const o=wrapBackgroundCbForFFI(r,(e=>{throwOnErrorResult(e.error,"dittoffi_transaction_execute_async_throws"),n(e.success)})),s=bytesFromString(t);dittoffi_transaction_execute_async_throws(e,s,i,o)}))}function transactionInfo(e){ensureInitialized();return boxCBytesIntoBuffer(dittoffi_transaction_info(e))}function transactionFree(e){ensureInitialized(),dittoffi_transaction_free(e)}function dittoTryNewBlocking(e,t,i,n){ensureInitialized();const r=dittoffi_ditto_try_new_blocking(bytesFromString(e),t,i,bytesFromString(null),n);return throwOnErrorResult(r.error,"dittoffi_ditto_try_new_blocking"),r.success}function dittoFree(e){return ensureInitialized(),ditto_free(e)}function cryptoGenerateSecureRandomToken(){ensureInitialized();return boxCStringIntoString(dittoffi_crypto_generate_secure_random_token())}function dittoRegisterPresenceV1Callback(e,t){ensureInitialized(),ditto_register_presence_v1_callback(e,wrapBackgroundCbForFFI((e=>log("Error",`The registered presence callback v1 errored with ${e}`)),(e=>{const i=refCStringToString(e);t(i)})))}async function dittoClearPresenceCallback(e){return ensureInitialized(),ditto_clear_presence_callback(e)}function dittoRegisterPresenceV3Callback(e,t){ensureInitialized(),ditto_register_presence_v3_callback(e,wrapBackgroundCbForFFI((e=>log("Error",`The registered presence callback v3 errored with ${e}`)),(e=>{const i=refCStringToString(e);t(i)})))}async function dittoClearPresenceV3Callback(e){return ensureInitialized(),ditto_clear_presence_v3_callback(e)}function presencePeerMetadataJSON(e){ensureInitialized();const t=boxCBytesIntoBuffer(dittoffi_presence_peer_metadata_json(e));return(new TextDecoder).decode(t)}async function presenceTrySetPeerMetadataJSON(e,t){ensureInitialized();const i=bytesFromString(t);throwOnErrorResult((await dittoffi_presence_try_set_peer_metadata_json(e,i)).error,"dittoffi_presence_try_set_peer_metadata_json")}function connectionRequestPeerKeyString(e){ensureInitialized();return boxCStringIntoString(dittoffi_connection_request_peer_key_string(e))}function connectionRequestPeerMetadataJSON(e){ensureInitialized();const t=refCBytesIntoBuffer(dittoffi_connection_request_peer_metadata_json(e));return(new TextDecoder).decode(t)}function connectionRequestIdentityServiceMetadataJSON(e){ensureInitialized();const t=refCBytesIntoBuffer(dittoffi_connection_request_identity_service_metadata_json());return(new TextDecoder).decode(t)}function connectionRequestConnectionType(e){return ensureInitialized(),dittoffi_connection_request_connection_type(e)}function connectionRequestAuthorize(e,t){ensureInitialized(),dittoffi_connection_request_authorize(e,t)}function connectionRequestFree(e){ensureInitialized(),dittoffi_connection_request_free(e)}function presenceSetConnectionRequestHandler(e,t,i){if(ensureInitialized(),null==t)dittoffi_presence_set_connection_request_handler(e,null);else{dittoffi_presence_set_connection_request_handler(e,wrapAsyncBackgroundCbForFFI(i,t))}}function dittoIsActivated(e){return ensureInitialized(),dittoffi_ditto_is_activated(e)}function dittoIsSyncActive(e){return ensureInitialized(),dittoffi_ditto_is_sync_active(e)}function dittoStartSync(e){ensureInitialized();throwOnErrorResult(dittoffi_ditto_try_start_sync(e).error,"dittoffi_ditto_try_start_sync")}function dittoStopSync(e){return ensureInitialized(),dittoffi_ditto_stop_sync(e)}function dittoSetTransportConfig(e,t){ensureInitialized();throwOnErrorResult(dittoffi_ditto_try_set_transport_config(e,t,!0).error,"dittoffi_ditto_try_set_transport_config")}function dittoTransportConfig(e){ensureInitialized();return boxCBytesIntoBuffer(dittoffi_ditto_transport_config(e))}function dittoSetCloudSyncEnabled(e,t){ensureInitialized(),dittoffi_ditto_set_cloud_sync_enabled(e,t)}function dittoSmallPeerInfoGetIsEnabled(e){return ensureInitialized(),ditto_small_peer_info_get_is_enabled(e)}function dittoSmallPeerInfoSetEnabled(e,t){return ensureInitialized(),ditto_small_peer_info_set_enabled(e,t)}function dittoSmallPeerInfoGetSyncScope(e){return ensureInitialized(),ditto_small_peer_info_get_sync_scope(e)}function dittoSmallPeerInfoSetSyncScope(e,t){return ensureInitialized(),ditto_small_peer_info_set_sync_scope(e,t)}function dittoSmallPeerInfoGetMetadata(e){ensureInitialized();return boxCStringIntoString(ditto_small_peer_info_get_metadata(e))}function dittoSmallPeerInfoSetMetadata(e,t){ensureInitialized();const i=ditto_small_peer_info_set_metadata(e,bytesFromString(t));switch(i){case 0:return;case-1:throw new Error("Internal inconsistency, the observability subsystem is unavailable.");case 1:throw new Error(`Validation error, size limit exceeded: ${errorMessage()||"metadata is too big"}`);case 2:throw new Error(`Validation error, ${errorMessage()||"depth limit for metadata object exceeded"}`);case 3:throw new Error(`Validation error, ${errorMessage()||`'${t}' is not a valid JSON object`}`);default:throw new Error(errorMessage()||`Internal inconsistency, ditto_small_peer_info_set_metadata() returned an unknown error code: ${i}`)}}function dittoRegisterTransportConditionChangedCallback(e,t){ensureInitialized(),ditto_register_transport_condition_changed_callback(e,t?wrapBackgroundCbForFFI((e=>log("Error",`The registered "transport condition changed" callback errored with ${e}`)),t):null)}function dittoSetDeviceName(e,t){ensureInitialized();return boxCStringIntoString(ditto_set_device_name(e,bytesFromString(t)))}function dittoNewAttachmentFromFile(e,t,i){ensureInitialized();const n={},r=ditto_new_attachment_from_file(e,bytesFromString(t),i,n);if(0!==r)throw new DittoFFIError(r,null,`ditto_new_attachment_from_file() failed with error code: ${r}`);return n}async function dittoNewAttachmentFromBytes(e,t){ensureInitialized();const i={},n=await ditto_new_attachment_from_bytes(e,t,i);if(0!==n)throw new DittoFFIError(n,null,`ditto_new_attachment_from_bytes() failed with error code: ${n}`);return i}async function dittoResolveAttachment(e,t,i,n){ensureInitialized();const{onComplete:r,onProgress:o,onDelete:s}=i,a=wrapBackgroundCbForFFI(n,r),c=wrapBackgroundCbForFFI(n,o),d=wrapBackgroundCbForFFI(n,s),{status_code:l,cancel_token:u}=await ditto_resolve_attachment(e,t,a,c,d);if(0!==l)throw new DittoFFIError(l,null,`ditto_resolve_attachment() failed with error code: ${l}`);return u}function dittoCancelResolveAttachment(e,t,i){ensureInitialized();const n=ditto_cancel_resolve_attachment(e,t,i);if(0!==n)throw new Error(errorMessage()||`ditto_cancel_resolve_attachment() failed with error code: ${n}`)}function freeAttachmentHandle(e){ensureInitialized(),ditto_free_attachment_handle(e)}function dittoGetCompleteAttachmentPath(e,t){ensureInitialized();return refCStringToString(ditto_get_complete_attachment_path(e,t))}function dittoGetSDKVersion(e){ensureInitialized();return boxCStringIntoString(ditto_get_sdk_version(e))}function dittoGetSDKSemver(){ensureInitialized();return boxCStringIntoString(dittoffi_get_sdk_semver())}function dittoPresenceV1(e){ensureInitialized();return boxCStringIntoString(ditto_presence_v1(e))}function dittoPresenceV3(e){ensureInitialized();return boxCStringIntoString(ditto_presence_v3(e))}async function dittoShutdown(e){return ensureInitialized(),await ditto_shutdown(e)}async function dittoRunGarbageCollection(e){ensureInitialized();const t=await ditto_run_garbage_collection(e);if(0!==t)throw new Error(errorMessage()||`ditto_run_garbage_collection() failed with error code: ${t}`)}async function dittoDisableSyncWithV3(e){ensureInitialized();const t=await ditto_disable_sync_with_v3(e);if(0!==t)throw new Error(errorMessage()||`ditto_disable_sync_with_v3() failed with error code: ${t}`)}function base64encode(e,t){return boxCStringIntoString(dittoffi_base64_encode(e,t))}function tryBase64Decode(e,t){const i=dittoffi_try_base64_decode(bytesFromString(e),t);return throwOnErrorResult(i.error,"dittoffi_try_base64_decode"),boxCBytesIntoBuffer(i.success)}async function dittoAuthSetLoginProvider(e,t){return ensureInitialized(),await ditto_auth_set_login_provider(e,t)}function dittoAuthClientMakeLoginProvider(e,t){return ensureInitialized(),ditto_auth_client_make_login_provider(wrapBackgroundCbForFFI(t,e))}function transportsInit(){ensureInitialized();const{output:e,errorType:t}=withTransportsError(ditto_sdk_transports_init);if(!1===e)throw new Error(`Failed to initialize transports (${t} error)`)}function withTransportsError(e,...t){const i=ditto_sdk_transports_error_new(),n=e(...t,i),r=ditto_sdk_transports_error_value(i);return ditto_sdk_transports_error_free(i),{output:n,errorType:r}}!function(e){e[e.counter=0]="counter",e[e.register=1]="register",e[e.attachment=2]="attachment",e[e.rga=3]="rga",e[e.rwMap=4]="rwMap"}(DittoCRDTType||(DittoCRDTType={}));let isInitialized=!1;function tryVerifyLicense(e,t){ensureInitialized();throwOnErrorResult(dittoffi_try_verify_license(e,bytesFromString(t)).error,"dittoffi_try_verify_license")}function defaultDeviceName(){return defaultDeviceName$1()}function createDirectory(e){return createDirectory$1(e)}function readFile(e){return readFile$1(e)}function copyFile(e,t,i){return copyFile$1(e,t,i)}function wrapBackgroundCbForFFI(e,t){return t}function wrapAsyncBackgroundCbForFFI(e,t){return t}function bytesFromString(e){if(void 0===e)return;if(null===e)return null;if("string"!=typeof e)throw new Error(`Can't convert string to Uint8Array, not a string: ${e}`);return(new TextEncoder).encode(`${e}\0`)}function errorMessage(){ensureInitialized();return boxCStringIntoString(ditto_error_message())}function ensureInitialized(){if(!isInitialized)throw new Error("Ditto needs to be initialized before using any of its API, please make sure to call `await init()` first.")}isInitialized=!0;const ERROR_CODES={internal:"An unexpected internal error occurred. Please get in touch with Ditto customer service to report this incident.","internal/unknown-error":"An unexpected internal error occurred. Please get in touch with Ditto customer service to report this incident.","sdk/unsupported":"The feature is not supported by the current environment.","authentication/failed-to-authenticate":"Ditto failed to authenticate.","io/already-exists":"A file or directory already exists.","io/not-found":"A file or directory could not be found.","io/permission-denied":"The operation failed due to insufficient permissions.","io/operation-failed":"The operation failed.","query/arguments-invalid":"The query arguments were invalid.","query/evaluation":"The query could not be evaluated.","query/execution":"The query could not be executed.","query/invalid":"The query was invalid.","query/unsupported":"The query contains unsupported features.","query/parameter":"The query to update system parameters failed.","store/backend":"An error occurred with the storage backend.","store/crdt":"An error occurred processing a CRDT.","store/document-not-found":"The document with the provided ID could not be found.","store/transaction-read-only":"A mutating DQL query was attempted using a read-only transaction.","store/document-id":"The document ID is invalid.","store/persistence-directory-locked":"The chosen persistence directory is already in use by another Ditto instance.","store/attachment-file-permission-denied":"Permission has been denied for a file operation when working with attachments.","store/attachment-file-not-found":"The source file for the attachment does not exist.","store/attachment-not-found":"The attachment could not be found.","store/attachment-token-invalid":"The attachment token is invalid.","store/failed-to-create-attachment":"The attachment could not be created.","store/failed-to-fetch-attachment":"The attachment could not be fetched.","activation/license-token-verification-failed":"Please provide a valid license token.","activation/license-token-expired":"The license token expired. Please renew it.","activation/license-token-unsupported-future-version":"The provided license token is in an unsupported future format.","activation/not-activated":"The operation failed because the Ditto instance has not yet been activated.","activation/unnecessary":"Activation is unnecessary for this Ditto instance, because of its identity.","validation/depth-limit-exceeded":"The maximum depth limit has been exceeded.","validation/invalid-cbor":"The value provided is not valid CBOR.","validation/invalid-json":"The value provided is not valid JSON.","validation/invalid-transport-config":"The TransportConfig is invalid for the active platform.","validation/not-an-object":"The value provided is not of type object.","validation/not-json-compatible":"Value is not serializable as JSON.","validation/size-limit-exceeded":"The size limit has been exceeded.","encryption/extraneous-passphrase-given":"Unexpected passphrase provided for the currently unencrypted store.","differ/identity-key-path-invalid":"A provided identity key path is invalid."},DEFAULT_STATUS_CODE_MAPPING={ActivationLicenseTokenExpired:["activation/license-token-expired"],ActivationLicenseTokenInvalid:["activation/license-token-verification-failed"],ActivationLicenseUnsupportedFutureVersion:["activation/license-token-unsupported-future-version"],ActivationNotActivated:["activation/not-activated"],ActivationUnnecessary:["activation/unnecessary"],IoAlreadyExists:["io/already-exists"],IoNotFound:["io/not-found"],IoPermissionDenied:["io/permission-denied"],IoOperationFailed:["io/operation-failed"],JsFloatingStoreOperation:["internal","Internal inconsistency, an outstanding store operation was not awaited."],DqlEvaluationError:["query/evaluation"],DqlQueryCompilation:["query/invalid"],DqlInvalidQueryArgs:["query/arguments-invalid"],DqlUnsupported:["query/unsupported"],StoreQuery:["query/execution"],ParameterQuery:["query/parameter"],EncryptionExtraneousPassphraseGiven:["encryption/extraneous-passphrase-given"],StoreDatabase:["store/backend"],StoreDocumentId:["store/document-id"],StoreDocumentNotFound:["store/document-not-found"],StoreTransactionReadOnly:["store/transaction-read-only"],Crdt:["store/crdt"],LockedDittoWorkingDirectory:["store/persistence-directory-locked"],Base64Invalid:["internal","Invalid base64 encoding."],CborInvalid:["internal","Invalid CBOR encoding."],CborUnsupported:["internal","Unsupported CBOR encoding."],ValidationDepthLimitExceeded:["validation/depth-limit-exceeded"],ValidationInvalidCbor:["validation/invalid-cbor"],ValidationInvalidJson:["validation/invalid-json"],ValidationInvalidTransportConfig:["validation/invalid-transport-config"],ValidationNotAMap:["validation/not-an-object"],ValidationSizeLimitExceeded:["validation/size-limit-exceeded"],DifferIdentityKeyPathInvalid:["differ/identity-key-path-invalid"],Transport:["internal","Transport error."],Unsupported:["sdk/unsupported"],Unknown:["internal/unknown-error"],default:["internal/unknown-error"]};class DittoError extends Error{constructor(e,t,i={}){if(null==ERROR_CODES[e])throw new DittoError("internal",`Invalid error code: ${e}`);super(t||ERROR_CODES[e]),this.code="internal",this.code=e,this.context=Object.freeze({...i})}static fromFFIError(e,t,i,n){const r=i||e.message,o={coreError:e.code,coreErrorMessage:e.message,...n},s=new DittoError(t,r,o);return null!=e.stack&&(s.stack=e.stack),s}}function mapFFIErrors(e,t,i){try{return e()}catch(e){if(e instanceof DittoFFIError)throw translateFFIError(e,t,i);throw e}}async function mapFFIErrorsAsync(e,t,i){try{return await e()}catch(e){if(e instanceof DittoFFIError)throw translateFFIError(e,t,i);throw e}}const translateFFIError=(e,t,i)=>{var n;const r=e.code.toString();let o,s;return null!=t&&null!=t[r]?[o,s]=t[r]:[o,s]=null!==(n=DEFAULT_STATUS_CODE_MAPPING[r])&&void 0!==n?n:DEFAULT_STATUS_CODE_MAPPING.default,DittoError.fromFFIError(e,o,s,i)};class AttachmentToken{constructor(e){let t,i,n;null!=e[DittoCRDTTypeKey]?({id:t,len:i,meta:n}=AttachmentToken.validateTypedInput(e)):({id:t,len:i,meta:n}=AttachmentToken.validateUntypedInput(e)),this.id=mapFFIErrors((()=>base64encode(t,"Unpadded"))),this.idBytes=t,this.len=i,this.metadata=n}static validateTypedInput(e){if(e[DittoCRDTTypeKey]!==DittoCRDTType.attachment)throw new Error("Invalid attachment token");const t=e._id;if(!(t instanceof Uint8Array))throw new Error("Invalid attachment token id");const i=e._len;if("number"!=typeof i&&"bigint"!=typeof i||i<0)throw new Error("Invalid attachment token length, must be a non-negative number or bigint");const n=e._meta;if("object"!=typeof n)throw new Error("Invalid attachment token meta");return{id:t,len:i,meta:n}}static validateUntypedInput(e){const t=e.id;if("string"!=typeof t)throw new Error("Invalid attachment token id");const i=mapFFIErrors((()=>tryBase64Decode(t,"Unpadded")),{Base64Invalid:["store/attachment-token-invalid","Failed to decode attachment token id from base64 input"]},{attachmentTokenID:t}),n=e.len;if("number"!=typeof n&&"bigint"!=typeof n||n<0)throw new Error("Invalid attachment token length, must be a non-negative number or bigint");const r=e.metadata;if("object"!=typeof r)throw new Error("Invalid attachment token meta");return{id:i,len:n,meta:r}}}class Logger{static get logFile(){return this._logFile}static setLogFile(e){e?(loggerSetLogFile(e),this._logFile=e):(loggerSetLogFile(void 0),delete this._logFile)}static setLogFileURL(e){var t;this.setLogFile(null!==(t=null==e?void 0:e.pathname)&&void 0!==t?t:null)}static get enabled(){return loggerEnabledGet()}static set enabled(e){loggerEnabled(e)}static get emojiLogLevelHeadingsEnabled(){return loggerEmojiHeadingsEnabledGet()}static set emojiLogLevelHeadingsEnabled(e){loggerEmojiHeadingsEnabled(e)}static get minimumLogLevel(){return loggerMinimumLogLevelGet()}static set minimumLogLevel(e){loggerMinimumLogLevel(e)}static get customLogCallback(){return this._customLogCallback}static async setCustomLogCallback(e){if(null!=e&&"function"!=typeof e)throw new TypeError(`Expected parameter 'callback' to be a function or undefined, but got ${typeof e}.`);null!=e?(await loggerSetCustomLogCb(e),this._customLogCallback=e):(await loggerSetCustomLogCb(null),delete this._customLogCallback)}static async exportToFile(e){if("string"!=typeof e)throw new TypeError(`Expected parameter 'path' to be a string, but got ${typeof e}.`);let t=e;return mapFFIErrorsAsync((()=>loggerTryExportToFileAsync(t)))}static log(e,t){log(e,t)}static error(e){this.log("Error",e)}static warning(e){this.log("Warning",e)}static info(e){this.log("Info",e)}static debug(e){this.log("Debug",e)}static verbose(e){this.log("Verbose",e)}constructor(){throw new Error("Logger can't be instantiated, use its static properties & methods directly instead.")}}var _a;const DEBUG_TYPE_NAMES=[],DEBUG_ALL_TYPES=!1;class Handle{constructor(e,t,i){this.isClosed=!1,this.isFinalized=!1,this.isUnregistered=!1,this.bridge=e,this.objectWeakRef=new WeakRef(t),this.pointer=i}get type(){return this.bridge.type}deref(){if(this.isClosed)throw new Error("Bridging error: can't get pointer for an object that has been closed.");if(this.isFinalized)throw new Error("Bridging error: can't get pointer for an object that has been finalized.");if(this.isUnregistered)throw new Error("Bridging error: can't get pointer for an object that has been unregistered.");return this.pointer}derefOrNull(){var e;return this.isClosed||this.isFinalized||this.isUnregistered?null:null!==(e=this.pointer)&&void 0!==e?e:null}object(){const e=this.objectWeakRef.deref();if(null==e)throw new Error(`Bridging error: ${this.bridge.type.name} object has been garbage collected.`);if(this.isClosed)throw new Error(`Bridging error: ${this.bridge.type.name} object has been closed.`);if(this.isUnregistered)throw new Error(`Bridging error: ${this.bridge.type.name} object has been unregistered.`);return e}objectOrNull(){var e;return null!==(e=this.objectWeakRef.deref())&&void 0!==e?e:null}toString(){const e=this.derefOrNull();return`{ Handle | type: ${this.bridge.type}, object: ${this.objectWeakRef.deref()}, FFI address: ${null==e?void 0:e.addr}, FFI type: ${null==e?void 0:e.type} }`}bridgeWillClose(){this.isClosed=!0}bridgeDidClose(){this.pointer=null}bridgeWillFinalize(){this.isFinalized=!0}bridgeDidFinalize(){this.pointer=null}bridgeWillUnregister(){this.isUnregistered=!0}bridgeDidUnregister(){this.pointer=null}}class Handles{constructor(e,t){this.handles=t.map((t=>e.handleFor(t)))}deref(){return this.handles.map((e=>e.deref()))}}class Bridge{constructor(e){this.internalType=null,this.release=e,this.handlesByAddress={},this.handlesByObject=new WeakMap,this.finalizationRegistry=new FinalizationRegistry(this.finalize.bind(this)),_a.all.push(new WeakRef(this))}get type(){if(null==this.internalType)throw new Error("Bridge type has not been registered yet.");return this.internalType}registerType(e){if(this.internalType!==e){if(this.internalType)throw new Error(`Can't register bridged type '${e.name}', another type was already registered: ${this.internalType}`);this.internalType=e}}handleFor(e){const t=this.handlesByObject.get(e);if(null==t)throw new Error(`Bridging error: ${this.type.name} object is not currently registered in this bridge.`);return t}handlesFor(e){return new Handles(this,e)}objectFor(e){const t=this.handlesByAddress[e.addr];if(t){if(t.type!==this.type)throw new Error(`Can't return object for pointer, pointer is associated with an object of type ${t.type} but this bridge is configured for ${this.type}`);return t.object()}}bridge(e,t){const i=this.objectFor(e);if(i)return i;let n;if(t||(t=()=>Reflect.construct(this.type,[])),"function"==typeof t){if(n=t(),!(n instanceof this.type))throw new Error(`Can't bridge, expected passed in create function to return a ${this.type.name} object but got: ${n}`)}else n=t;return this.register(n,e),n}register(e,t){const i=e.constructor;if(i!==this.type)throw new Error(`Can't register, bridge is configured for type ${this.type.name} but passed in object is of type ${i.name}`);const n=this.handlesByObject.get(e),r=n?n.pointer:null;if(null!=r&&null!=n)throw new Error(`Can't register, an object for the passed in pointer has previously been registered: ${n.object()}`);if(null!=r&&null==n)throw new Error(`Internal inconsistency, trying to register an object which has an associated pointer but no handle entry: ${i.name} at ${r.type} ${r.addr}`);if(null==r&&null!=n)throw new Error(`Internal inconsistency, trying to register an object which has a handle entry but no associated pointer: ${i.name} ${e}`);const o=new Handle(this,e,t);this.handlesByAddress[t.addr]=o,this.handlesByObject.set(e,o),this.finalizationRegistry.register(e,o,e),DEBUG_TYPE_NAMES.includes(this.type.name)&&Logger.debug(`[VERBOSE] Bridge REGISTERED a new instance of ${this.type.name}, current count: ${Object.keys(this.handlesByAddress).length}`)}unregister(e){const t=e.constructor,i=this.type;if(t!==i)throw new Error(`Can't unregister, bridge is configured for type ${i.name} but passed in object is of type ${t.name}`);const n=this.handlesByObject.get(e);if(null==n)throw new Error(`Can't unregister, object has not been registered before: ${e}`);if(n.type!==i)throw new Error(`Internal inconsistency, trying to unregister an object that has a handle with a different type than that of the bridge: ${n}`)