@dittolive/ditto 4.5.0 → 4.5.1-experimental.aarch64-linux.1.aarch64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/README.md +2 -2
  2. package/node/ditto.cjs.js +2 -9620
  3. package/node/{ditto.linux-x64.node → ditto.linux-arm64.node} +0 -0
  4. package/package.json +38 -34
  5. package/types/ditto.d.ts +0 -2
  6. package/web/ditto.es6.js +1 -1
  7. package/web/ditto.umd.js +1 -1
  8. package/web/ditto.wasm +0 -0
  9. package/DittoReactNative.podspec +0 -27
  10. package/node/ditto.darwin-arm64.node +0 -0
  11. package/node/ditto.darwin-x64.node +0 -0
  12. package/node/ditto.linux-arm.node +0 -0
  13. package/node/ditto.win32-x64.node +0 -0
  14. package/node/transports.darwin-arm64.node +0 -0
  15. package/node/transports.darwin-x64.node +0 -0
  16. package/react-native/android/CMakeLists.txt +0 -37
  17. package/react-native/android/build.gradle +0 -203
  18. package/react-native/android/cpp-adapter.cpp +0 -254
  19. package/react-native/android/gradle.properties +0 -5
  20. package/react-native/android/src/main/AndroidManifest.xml +0 -4
  21. package/react-native/android/src/main/java/com/dittolive/rnsdk/DittoRNSDKModule.java +0 -85
  22. package/react-native/android/src/main/java/com/dittolive/rnsdk/DittoRNSDKPackage.java +0 -28
  23. package/react-native/boost/boost/assert.hpp +0 -85
  24. package/react-native/boost/boost/config/abi/borland_prefix.hpp +0 -27
  25. package/react-native/boost/boost/config/abi/borland_suffix.hpp +0 -12
  26. package/react-native/boost/boost/config/abi/msvc_prefix.hpp +0 -22
  27. package/react-native/boost/boost/config/abi/msvc_suffix.hpp +0 -8
  28. package/react-native/boost/boost/config/abi_prefix.hpp +0 -25
  29. package/react-native/boost/boost/config/abi_suffix.hpp +0 -25
  30. package/react-native/boost/boost/config/assert_cxx03.hpp +0 -211
  31. package/react-native/boost/boost/config/assert_cxx11.hpp +0 -209
  32. package/react-native/boost/boost/config/assert_cxx14.hpp +0 -47
  33. package/react-native/boost/boost/config/assert_cxx17.hpp +0 -62
  34. package/react-native/boost/boost/config/assert_cxx20.hpp +0 -59
  35. package/react-native/boost/boost/config/assert_cxx98.hpp +0 -23
  36. package/react-native/boost/boost/config/auto_link.hpp +0 -525
  37. package/react-native/boost/boost/config/compiler/borland.hpp +0 -339
  38. package/react-native/boost/boost/config/compiler/clang.hpp +0 -366
  39. package/react-native/boost/boost/config/compiler/clang_version.hpp +0 -83
  40. package/react-native/boost/boost/config/compiler/codegear.hpp +0 -385
  41. package/react-native/boost/boost/config/compiler/comeau.hpp +0 -59
  42. package/react-native/boost/boost/config/compiler/common_edg.hpp +0 -183
  43. package/react-native/boost/boost/config/compiler/compaq_cxx.hpp +0 -19
  44. package/react-native/boost/boost/config/compiler/cray.hpp +0 -446
  45. package/react-native/boost/boost/config/compiler/diab.hpp +0 -26
  46. package/react-native/boost/boost/config/compiler/digitalmars.hpp +0 -143
  47. package/react-native/boost/boost/config/compiler/gcc.hpp +0 -383
  48. package/react-native/boost/boost/config/compiler/gcc_xml.hpp +0 -114
  49. package/react-native/boost/boost/config/compiler/greenhills.hpp +0 -28
  50. package/react-native/boost/boost/config/compiler/hp_acc.hpp +0 -149
  51. package/react-native/boost/boost/config/compiler/intel.hpp +0 -577
  52. package/react-native/boost/boost/config/compiler/kai.hpp +0 -33
  53. package/react-native/boost/boost/config/compiler/metrowerks.hpp +0 -198
  54. package/react-native/boost/boost/config/compiler/mpw.hpp +0 -140
  55. package/react-native/boost/boost/config/compiler/nvcc.hpp +0 -61
  56. package/react-native/boost/boost/config/compiler/pathscale.hpp +0 -138
  57. package/react-native/boost/boost/config/compiler/pgi.hpp +0 -23
  58. package/react-native/boost/boost/config/compiler/sgi_mipspro.hpp +0 -29
  59. package/react-native/boost/boost/config/compiler/sunpro_cc.hpp +0 -222
  60. package/react-native/boost/boost/config/compiler/vacpp.hpp +0 -186
  61. package/react-native/boost/boost/config/compiler/visualc.hpp +0 -391
  62. package/react-native/boost/boost/config/compiler/xlcpp.hpp +0 -299
  63. package/react-native/boost/boost/config/compiler/xlcpp_zos.hpp +0 -173
  64. package/react-native/boost/boost/config/detail/cxx_composite.hpp +0 -203
  65. package/react-native/boost/boost/config/detail/posix_features.hpp +0 -95
  66. package/react-native/boost/boost/config/detail/select_compiler_config.hpp +0 -157
  67. package/react-native/boost/boost/config/detail/select_platform_config.hpp +0 -147
  68. package/react-native/boost/boost/config/detail/select_stdlib_config.hpp +0 -121
  69. package/react-native/boost/boost/config/detail/suffix.hpp +0 -1294
  70. package/react-native/boost/boost/config/header_deprecated.hpp +0 -26
  71. package/react-native/boost/boost/config/helper_macros.hpp +0 -37
  72. package/react-native/boost/boost/config/no_tr1/cmath.hpp +0 -28
  73. package/react-native/boost/boost/config/no_tr1/complex.hpp +0 -28
  74. package/react-native/boost/boost/config/no_tr1/functional.hpp +0 -28
  75. package/react-native/boost/boost/config/no_tr1/memory.hpp +0 -28
  76. package/react-native/boost/boost/config/no_tr1/utility.hpp +0 -28
  77. package/react-native/boost/boost/config/platform/aix.hpp +0 -33
  78. package/react-native/boost/boost/config/platform/amigaos.hpp +0 -15
  79. package/react-native/boost/boost/config/platform/beos.hpp +0 -26
  80. package/react-native/boost/boost/config/platform/bsd.hpp +0 -83
  81. package/react-native/boost/boost/config/platform/cloudabi.hpp +0 -18
  82. package/react-native/boost/boost/config/platform/cray.hpp +0 -18
  83. package/react-native/boost/boost/config/platform/cygwin.hpp +0 -71
  84. package/react-native/boost/boost/config/platform/haiku.hpp +0 -31
  85. package/react-native/boost/boost/config/platform/hpux.hpp +0 -87
  86. package/react-native/boost/boost/config/platform/irix.hpp +0 -31
  87. package/react-native/boost/boost/config/platform/linux.hpp +0 -106
  88. package/react-native/boost/boost/config/platform/macos.hpp +0 -87
  89. package/react-native/boost/boost/config/platform/qnxnto.hpp +0 -31
  90. package/react-native/boost/boost/config/platform/solaris.hpp +0 -31
  91. package/react-native/boost/boost/config/platform/symbian.hpp +0 -97
  92. package/react-native/boost/boost/config/platform/vms.hpp +0 -25
  93. package/react-native/boost/boost/config/platform/vxworks.hpp +0 -422
  94. package/react-native/boost/boost/config/platform/wasm.hpp +0 -23
  95. package/react-native/boost/boost/config/platform/win32.hpp +0 -90
  96. package/react-native/boost/boost/config/platform/zos.hpp +0 -32
  97. package/react-native/boost/boost/config/pragma_message.hpp +0 -31
  98. package/react-native/boost/boost/config/requires_threads.hpp +0 -92
  99. package/react-native/boost/boost/config/stdlib/dinkumware.hpp +0 -324
  100. package/react-native/boost/boost/config/stdlib/libcomo.hpp +0 -93
  101. package/react-native/boost/boost/config/stdlib/libcpp.hpp +0 -180
  102. package/react-native/boost/boost/config/stdlib/libstdcpp3.hpp +0 -482
  103. package/react-native/boost/boost/config/stdlib/modena.hpp +0 -79
  104. package/react-native/boost/boost/config/stdlib/msl.hpp +0 -98
  105. package/react-native/boost/boost/config/stdlib/roguewave.hpp +0 -208
  106. package/react-native/boost/boost/config/stdlib/sgi.hpp +0 -168
  107. package/react-native/boost/boost/config/stdlib/stlport.hpp +0 -258
  108. package/react-native/boost/boost/config/stdlib/vacpp.hpp +0 -74
  109. package/react-native/boost/boost/config/stdlib/xlcpp_zos.hpp +0 -61
  110. package/react-native/boost/boost/config/user.hpp +0 -133
  111. package/react-native/boost/boost/config/warning_disable.hpp +0 -47
  112. package/react-native/boost/boost/config/workaround.hpp +0 -305
  113. package/react-native/boost/boost/config.hpp +0 -67
  114. package/react-native/boost/boost/cstdint.hpp +0 -556
  115. package/react-native/boost/boost/intrusive_ptr.hpp +0 -18
  116. package/react-native/boost/boost/smart_ptr/detail/atomic_count.hpp +0 -103
  117. package/react-native/boost/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  118. package/react-native/boost/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  119. package/react-native/boost/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  120. package/react-native/boost/boost/smart_ptr/detail/atomic_count_nt.hpp +0 -66
  121. package/react-native/boost/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  122. package/react-native/boost/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  123. package/react-native/boost/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +0 -67
  124. package/react-native/boost/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  125. package/react-native/boost/boost/smart_ptr/detail/atomic_count_win32.hpp +0 -70
  126. package/react-native/boost/boost/smart_ptr/detail/local_counted_base.hpp +0 -148
  127. package/react-native/boost/boost/smart_ptr/detail/local_sp_deleter.hpp +0 -91
  128. package/react-native/boost/boost/smart_ptr/detail/operator_bool.hpp +0 -64
  129. package/react-native/boost/boost/smart_ptr/detail/requires_cxx11.hpp +0 -23
  130. package/react-native/boost/boost/smart_ptr/detail/shared_count.hpp +0 -707
  131. package/react-native/boost/boost/smart_ptr/detail/sp_convertible.hpp +0 -92
  132. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base.hpp +0 -92
  133. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  134. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  135. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  136. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  137. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  138. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  139. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  140. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  141. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  142. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp +0 -119
  143. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  144. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  145. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  146. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +0 -147
  147. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  148. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  149. package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp +0 -140
  150. package/react-native/boost/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -309
  151. package/react-native/boost/boost/smart_ptr/detail/sp_disable_deprecated.hpp +0 -40
  152. package/react-native/boost/boost/smart_ptr/detail/sp_forward.hpp +0 -52
  153. package/react-native/boost/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -27
  154. package/react-native/boost/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  155. package/react-native/boost/boost/smart_ptr/detail/sp_interlocked.hpp +0 -173
  156. package/react-native/boost/boost/smart_ptr/detail/sp_noexcept.hpp +0 -48
  157. package/react-native/boost/boost/smart_ptr/detail/sp_nullptr_t.hpp +0 -45
  158. package/react-native/boost/boost/smart_ptr/detail/sp_obsolete.hpp +0 -32
  159. package/react-native/boost/boost/smart_ptr/detail/sp_thread_pause.hpp +0 -51
  160. package/react-native/boost/boost/smart_ptr/detail/sp_thread_sleep.hpp +0 -104
  161. package/react-native/boost/boost/smart_ptr/detail/sp_thread_yield.hpp +0 -100
  162. package/react-native/boost/boost/smart_ptr/detail/sp_typeinfo_.hpp +0 -58
  163. package/react-native/boost/boost/smart_ptr/detail/sp_win32_sleep.hpp +0 -49
  164. package/react-native/boost/boost/smart_ptr/intrusive_ptr.hpp +0 -409
  165. package/react-native/boost/boost/smart_ptr/intrusive_ref_counter.hpp +0 -188
  166. package/react-native/cpp/include/Attachment.h +0 -16
  167. package/react-native/cpp/include/Authentication.h +0 -23
  168. package/react-native/cpp/include/Collection.h +0 -13
  169. package/react-native/cpp/include/DQL.h +0 -21
  170. package/react-native/cpp/include/Document.h +0 -17
  171. package/react-native/cpp/include/Identity.h +0 -17
  172. package/react-native/cpp/include/Lifecycle.h +0 -16
  173. package/react-native/cpp/include/LiveQuery.h +0 -17
  174. package/react-native/cpp/include/Logger.h +0 -22
  175. package/react-native/cpp/include/Misc.h +0 -26
  176. package/react-native/cpp/include/Presence.h +0 -14
  177. package/react-native/cpp/include/RetainableState.h +0 -24
  178. package/react-native/cpp/include/SmallPeerInfo.h +0 -17
  179. package/react-native/cpp/include/Transports.h +0 -25
  180. package/react-native/cpp/include/TypedArray.hpp +0 -167
  181. package/react-native/cpp/include/Utils.h +0 -61
  182. package/react-native/cpp/include/main.h +0 -10
  183. package/react-native/cpp/src/Attachment.cpp +0 -86
  184. package/react-native/cpp/src/Authentication.cpp +0 -224
  185. package/react-native/cpp/src/Collection.cpp +0 -54
  186. package/react-native/cpp/src/DQL.cpp +0 -254
  187. package/react-native/cpp/src/Document.cpp +0 -146
  188. package/react-native/cpp/src/Identity.cpp +0 -123
  189. package/react-native/cpp/src/Lifecycle.cpp +0 -75
  190. package/react-native/cpp/src/LiveQuery.cpp +0 -64
  191. package/react-native/cpp/src/Logger.cpp +0 -200
  192. package/react-native/cpp/src/Misc.cpp +0 -271
  193. package/react-native/cpp/src/Presence.cpp +0 -77
  194. package/react-native/cpp/src/RetainableState.cpp +0 -15
  195. package/react-native/cpp/src/SmallPeerInfo.cpp +0 -108
  196. package/react-native/cpp/src/Transports.cpp +0 -270
  197. package/react-native/cpp/src/TypedArray.cpp +0 -303
  198. package/react-native/cpp/src/Utils.cpp +0 -138
  199. package/react-native/cpp/src/main.cpp +0 -149
  200. package/react-native/dittoffi/dittoffi.h +0 -4698
  201. package/react-native/dittoffi/ifaddrs.cpp +0 -385
  202. package/react-native/dittoffi/ifaddrs.h +0 -206
  203. package/react-native/ios/DittoRNSDK.h +0 -7
  204. package/react-native/ios/DittoRNSDK.mm +0 -107
  205. package/react-native/ios/YeetJSIUtils.h +0 -60
  206. package/react-native/ios/YeetJSIUtils.mm +0 -196
  207. package/react-native/lib/commonjs/ditto.rn.js +0 -93
  208. package/react-native/lib/commonjs/ditto.rn.js.map +0 -1
  209. package/react-native/lib/commonjs/index.js +0 -14
  210. package/react-native/lib/commonjs/index.js.map +0 -1
  211. package/react-native/lib/module/ditto.rn.js +0 -83
  212. package/react-native/lib/module/ditto.rn.js.map +0 -1
  213. package/react-native/lib/module/index.js +0 -13
  214. package/react-native/lib/module/index.js.map +0 -1
  215. package/react-native/lib/typescript/ditto.rn.d.ts +0 -15
  216. package/react-native/lib/typescript/ditto.rn.d.ts.map +0 -1
  217. package/react-native/lib/typescript/index.d.ts +0 -1
  218. package/react-native/lib/typescript/index.d.ts.map +0 -1
  219. package/react-native/scripts/ruby/include_local_boost.rb +0 -78
  220. package/react-native/src/ditto.rn.ts +0 -91
  221. package/react-native/src/environment/environment.fallback.ts +0 -4
  222. package/react-native/src/index.ts +0 -26
  223. package/react-native/src/sources/@cbor-redux.ts +0 -2
  224. package/react-native/src/sources/@ditto.core.ts +0 -1
  225. package/react-native/src/sources/@environment.ts +0 -2
  226. package/react-native/src/sources/attachment-fetch-event.ts +0 -54
  227. package/react-native/src/sources/attachment-fetcher-manager.ts +0 -129
  228. package/react-native/src/sources/attachment-fetcher.ts +0 -124
  229. package/react-native/src/sources/attachment-token.ts +0 -48
  230. package/react-native/src/sources/attachment.ts +0 -59
  231. package/react-native/src/sources/augment.ts +0 -89
  232. package/react-native/src/sources/authenticator.ts +0 -314
  233. package/react-native/src/sources/base-pending-cursor-operation.ts +0 -237
  234. package/react-native/src/sources/base-pending-id-specific-operation.ts +0 -109
  235. package/react-native/src/sources/bridge.ts +0 -549
  236. package/react-native/src/sources/build-time-constants.ts +0 -4
  237. package/react-native/src/sources/cbor.ts +0 -35
  238. package/react-native/src/sources/collection-interface.ts +0 -67
  239. package/react-native/src/sources/collection.ts +0 -212
  240. package/react-native/src/sources/collections-event.ts +0 -99
  241. package/react-native/src/sources/counter.ts +0 -77
  242. package/react-native/src/sources/ditto.ts +0 -945
  243. package/react-native/src/sources/document-id.ts +0 -159
  244. package/react-native/src/sources/document-path.ts +0 -303
  245. package/react-native/src/sources/document.ts +0 -192
  246. package/react-native/src/sources/epilogue.ts +0 -24
  247. package/react-native/src/sources/error-codes.ts +0 -52
  248. package/react-native/src/sources/error.ts +0 -203
  249. package/react-native/src/sources/essentials.ts +0 -53
  250. package/react-native/src/sources/ffi-error.ts +0 -117
  251. package/react-native/src/sources/ffi.ts +0 -1972
  252. package/react-native/src/sources/identity.ts +0 -163
  253. package/react-native/src/sources/init.ts +0 -70
  254. package/react-native/src/sources/internal.ts +0 -113
  255. package/react-native/src/sources/keep-alive.ts +0 -69
  256. package/react-native/src/sources/key-path.ts +0 -195
  257. package/react-native/src/sources/live-query-event.ts +0 -208
  258. package/react-native/src/sources/live-query-manager.ts +0 -101
  259. package/react-native/src/sources/live-query.ts +0 -164
  260. package/react-native/src/sources/logger.ts +0 -196
  261. package/react-native/src/sources/observer-manager.ts +0 -175
  262. package/react-native/src/sources/observer.ts +0 -77
  263. package/react-native/src/sources/pending-collections-operation.ts +0 -232
  264. package/react-native/src/sources/pending-cursor-operation.ts +0 -218
  265. package/react-native/src/sources/pending-id-specific-operation.ts +0 -216
  266. package/react-native/src/sources/presence-manager.ts +0 -160
  267. package/react-native/src/sources/presence.ts +0 -238
  268. package/react-native/src/sources/query-result-item.ts +0 -116
  269. package/react-native/src/sources/query-result.ts +0 -55
  270. package/react-native/src/sources/register.ts +0 -92
  271. package/react-native/src/sources/small-peer-info.ts +0 -176
  272. package/react-native/src/sources/static-tcp-client.ts +0 -6
  273. package/react-native/src/sources/store-observer.ts +0 -176
  274. package/react-native/src/sources/store.ts +0 -365
  275. package/react-native/src/sources/subscription-manager.ts +0 -98
  276. package/react-native/src/sources/subscription.ts +0 -88
  277. package/react-native/src/sources/sync-subscription.ts +0 -90
  278. package/react-native/src/sources/sync.ts +0 -495
  279. package/react-native/src/sources/test-helpers.ts +0 -24
  280. package/react-native/src/sources/transport-conditions-manager.ts +0 -104
  281. package/react-native/src/sources/transport-config.ts +0 -428
  282. package/react-native/src/sources/update-result.ts +0 -66
  283. package/react-native/src/sources/update-results-map.ts +0 -57
  284. package/react-native/src/sources/websocket-client.ts +0 -6
  285. package/react-native/src/sources/write-transaction-collection.ts +0 -122
  286. package/react-native/src/sources/write-transaction-pending-cursor-operation.ts +0 -101
  287. package/react-native/src/sources/write-transaction-pending-id-specific-operation.ts +0 -72
  288. package/react-native/src/sources/write-transaction.ts +0 -119
  289. package/react-native.config.js +0 -9
@@ -1,495 +0,0 @@
1
- //
2
- // Copyright © 2021 DittoLive Incorporated. All rights reserved.
3
- //
4
-
5
- import * as FFI from './ffi'
6
- import * as Environment from './@environment'
7
-
8
- import { Bridge } from './bridge'
9
- import { CBOR, documentIDReplacer } from './cbor'
10
- import { defaultDittoCloudURL } from './internal'
11
- import { SyncSubscription } from './sync-subscription'
12
- import { TransportConfig } from './transport-config'
13
- import { DittoError, mapFFIErrors } from './error'
14
-
15
- import type { Ditto } from './ditto'
16
- import type { Identity } from './identity'
17
- import type { DQLQueryArguments } from './essentials'
18
-
19
- /** @internal */
20
- export type SyncParameters = {
21
- readonly isSyncActive: boolean
22
- readonly isX509Valid: boolean
23
- readonly isWebValid: boolean
24
- readonly ditto: Ditto
25
- readonly identity: Identity
26
- readonly transportConfig: TransportConfig
27
- }
28
-
29
- /** @internal */
30
- export type SyncState = {
31
- readonly underlyingSyncParameters: SyncParameters
32
- readonly effectiveTransportConfig: TransportConfig
33
- }
34
-
35
- /**
36
- * Provides access to sync related functionality of Ditto.
37
- *
38
- * Access this object via {@link Ditto.sync | Ditto.sync} on any Ditto instance.
39
- */
40
- export class Sync {
41
- /**
42
- * The {@link Ditto} instance managed by this sync object.
43
- */
44
- readonly ditto: Ditto
45
-
46
- /**
47
- * All currently active sync subscriptions.
48
- *
49
- * **Note:** Manage sync subscriptions using
50
- * {@link registerSubscription | registerSubscription()} to register a new
51
- * sync subscription and
52
- * {@link SyncSubscription.cancel | SyncSubscription.cancel()} to remove an
53
- * existing sync subscription.
54
- */
55
- readonly subscriptions: Readonly<Array<SyncSubscription>> = Object.freeze([])
56
-
57
- /**
58
- * Installs and returns a sync subscription for a query, configuring Ditto to
59
- * receive updates from other peers for documents matching that query. The
60
- * passed in query must be a `SELECT` query, otherwise an error is thrown.
61
- *
62
- * @param query a string containing a valid query expressed in DQL.
63
- * @param queryArguments an object containing the arguments for the query.
64
- * Example: `{mileage: 123}` for a query with `:mileage` placeholder.
65
- * @returns An active `SyncSubscription` for the passed in query and
66
- * arguments. It will remain active until it is
67
- * {@link SyncSubscription.cancel | cancelled} or the {@link Ditto} instance
68
- * managing the sync subscription has been closed.
69
- * @throws {@link DittoError} `query/invalid`: if `query` argument is not a
70
- * string or not valid DQL.
71
- * @throws {@link DittoError} `query/arguments-invalid`: if `queryArguments`
72
- * argument is invalid (e.g. contains unsupported types).
73
- * @throws {@link DittoError} `query/unsupported`: if the query is not a
74
- * `SELECT` query.
75
- * @throws {@link DittoError} may throw other errors.
76
- */
77
- registerSubscription(query: string, queryArguments?: DQLQueryArguments): SyncSubscription {
78
- if (typeof query !== 'string') {
79
- throw new DittoError('query/invalid', `Expected parameter 'query' to be of type 'string', found: ${typeof query}`)
80
- }
81
-
82
- let queryArgumentsCBOR: Uint8Array | null = null
83
- if (queryArguments != null) {
84
- try {
85
- queryArgumentsCBOR = CBOR.encode(queryArguments, documentIDReplacer)
86
- } catch (error: any) {
87
- throw new DittoError('query/arguments-invalid', `Unable to encode query arguments: ${error.message}`)
88
- }
89
- }
90
-
91
- const errorContext = { query, queryArguments }
92
- const dittoHandle = Bridge.ditto.handleFor(this.ditto)
93
- this.ditto.deferClose(() => {
94
- mapFFIErrors(() => FFI.tryExperimentalAddDQLSubscription(dittoHandle.deref(), query, queryArgumentsCBOR), undefined, errorContext)
95
- })
96
-
97
- const subscription = new SyncSubscription(this.ditto, query, queryArguments || null, queryArgumentsCBOR)
98
-
99
- // @ts-expect-error modifying readonly property
100
- this.subscriptions = Object.freeze([...this.subscriptions, subscription])
101
-
102
- return subscription
103
- }
104
-
105
- // ---------------------------------------------------------- Internal ------
106
-
107
- /** @internal */
108
- get parameters(): SyncParameters {
109
- return this._parameters
110
- }
111
-
112
- /** @internal */
113
- constructor(ditto: Ditto) {
114
- const identity = ditto.identity
115
- const transportConfig = new TransportConfig()
116
- const parameters = { identity, transportConfig, ditto, isWebValid: false, isX509Valid: false, isSyncActive: false }
117
-
118
- this.ditto = ditto
119
- this._parameters = parameters
120
- this.state = stateFrom(parameters)
121
-
122
- FFI.transportsInit()
123
- }
124
-
125
- /**
126
- * Removes the passed in `syncSubscription`, configuring Ditto to not receive
127
- * updates for documents matching the corresponding query anymore. No-op if
128
- * the passed in `syncSubscription` has already been removed.
129
- *
130
- * This must only be called by the sync subscription itself.
131
- *
132
- * @param syncSubscription the sync subscription to remove
133
- * @returns `true` if the passed in sync subscription could be found and has
134
- * been removed, otherwise returns `false`.
135
- * @throws {@link DittoError} `internal`: if the replication subscription does not
136
- * belong to this store
137
- * @throws {@link DittoError} `internal`: if the replication subscription has not
138
- * been cancelled yet
139
- * @internal
140
- */
141
- unregisterSubscription(syncSubscription: SyncSubscription): boolean {
142
- if (syncSubscription.ditto !== this.ditto) {
143
- throw new DittoError('internal', `Can't remove replication subscription that does not belong to this store`)
144
- }
145
-
146
- if (!syncSubscription.isCancelled) {
147
- throw new DittoError('internal', "Internal inconsistency, can't remove replication subscription that has not been cancelled")
148
- }
149
-
150
- const indexToDelete = this.subscriptions.findIndex((s) => s === syncSubscription)
151
- if (indexToDelete === -1) {
152
- return false
153
- }
154
-
155
- const newSyncSubscriptions = [...this.subscriptions]
156
- newSyncSubscriptions.splice(indexToDelete, 1)
157
- this.subscriptions = Object.freeze(newSyncSubscriptions)
158
-
159
- const dittoHandle = Bridge.ditto.handleFor(this.ditto)
160
- this.ditto.deferClose(() => {
161
- // prettier-ignor
162
- mapFFIErrors(
163
- () => FFI.tryExperimentalRemoveDQLSubscription(dittoHandle.deref(), syncSubscription.queryString, syncSubscription.queryArgumentsCBOR)
164
- )
165
- })
166
- return true
167
- }
168
-
169
- /** @internal */
170
- update(parameters: SyncParameters) {
171
- this._parameters = { ...parameters }
172
-
173
- const stateOld = this.state
174
- const stateNew = stateFrom(this.parameters)
175
- this.updatePeerToPeerBluetoothLE(stateOld, stateNew)
176
- this.updatePeerToPeerAWDL(stateOld, stateNew)
177
- this.updatePeerToPeerLAN(stateOld, stateNew)
178
- this.updateListenTCP(stateOld, stateNew)
179
- this.updateListenHTTP(stateOld, stateNew)
180
- this.updateConnectTCPServers(stateOld, stateNew)
181
- this.updateConnectWebsocketURLs(stateOld, stateNew)
182
- this.updateGlobal(stateOld, stateNew)
183
- this.updateConnectRetryInterval(stateOld, stateNew)
184
- this.state = stateNew
185
- }
186
-
187
- /** @internal */
188
- close() {
189
- if (this.parameters.isSyncActive) {
190
- throw new Error(`Internal inconsistency, can't close sync object while sync is active, please 'stopSync()' first.`)
191
- }
192
-
193
- for (const subscription of this.subscriptions) {
194
- subscription.cancel()
195
- }
196
-
197
-
198
- }
199
-
200
- // ------------------------------------------------------------ Private ------
201
-
202
- private state: SyncState
203
-
204
- private _parameters: SyncParameters
205
-
206
- private bluetoothLETransportPointer: FFI.Pointer<'DittoTransportsBLE_t'> | null = null
207
- private awdlTransportPointer: FFI.Pointer<'DittoTransportsAWDL_t'> | null = null
208
- private lanTransportPointer: FFI.Pointer<'DittoTransportsLAN_t'> | null = null
209
- private mdnsClientTransportPointer: FFI.Pointer<'DittoTransportsMdnsClient_t'> | null = null
210
- private mdnsServerAdvertiserPointer: FFI.Pointer<'DittoTransportsMdnsServer_t'> | null = null
211
-
212
- private updatePeerToPeerBluetoothLE(stateOld: SyncState, stateNew: SyncState) {
213
- if (!Environment.isNodeBuild && !Environment.isReactNativeBuild) return
214
-
215
- const ditto = this.ditto
216
- const dittoHandle = Bridge.ditto.handleFor(ditto)
217
- ditto.deferClose(() => {
218
- const bluetoothLEOld = stateOld.effectiveTransportConfig.peerToPeer.bluetoothLE
219
- const bluetoothLENew = stateNew.effectiveTransportConfig.peerToPeer.bluetoothLE
220
-
221
- const shouldStart = !bluetoothLEOld.isEnabled && bluetoothLENew.isEnabled
222
- const shouldStop = bluetoothLEOld.isEnabled && !bluetoothLENew.isEnabled
223
-
224
- if (shouldStart && this.bluetoothLETransportPointer) throw new Error(`Internal inconsistency, when starting BLE transport, no BLE transport pointer should exist.`)
225
- if (shouldStop && !this.bluetoothLETransportPointer) throw new Error(`Internal inconsistency, when stopping BLE transport, a BLE transport pointer should exist.`)
226
-
227
-
228
- if (process.platform === 'linux' || process.platform === 'win32') {
229
- if (shouldStart) {
230
- const clientTransport = FFI.dittoAddInternalBLEClientTransport(dittoHandle.deref())
231
- const serverTransport = FFI.dittoAddInternalBLEServerTransport(dittoHandle.deref())
232
- const blePlatform = { clientTransport, serverTransport } as any
233
- this.bluetoothLETransportPointer = blePlatform
234
- }
235
-
236
- if (shouldStop) {
237
- const blePlatform = this.bluetoothLETransportPointer as any
238
- const { clientTransport, serverTransport } = blePlatform
239
- FFI.bleServerFreeHandle(serverTransport)
240
- FFI.bleClientFreeHandle(clientTransport)
241
- this.bluetoothLETransportPointer = null
242
- }
243
-
244
- return
245
- }
246
-
247
- if (shouldStart) {
248
- this.bluetoothLETransportPointer = FFI.transportsBLECreate(dittoHandle.deref()) as FFI.Pointer<FFI.TransportBluetooth> | null
249
- }
250
-
251
- if (shouldStop) {
252
- FFI.transportsBLEDestroy(this.bluetoothLETransportPointer as FFI.Pointer<FFI.TransportBluetooth>)
253
- this.bluetoothLETransportPointer = null
254
- }
255
- })
256
- }
257
-
258
- private updatePeerToPeerAWDL(stateOld: SyncState, stateNew: SyncState) {
259
- if (!Environment.isNodeBuild && !Environment.isReactNativeBuild) return
260
-
261
- const ditto = this.ditto
262
- const dittoHandle = Bridge.ditto.handleFor(ditto)
263
- ditto.deferClose(() => {
264
- const awdlOld = stateOld.effectiveTransportConfig.peerToPeer.awdl
265
- const awdlNew = stateNew.effectiveTransportConfig.peerToPeer.awdl
266
-
267
- const shouldStart = !awdlOld.isEnabled && awdlNew.isEnabled
268
- const shouldStop = awdlOld.isEnabled && !awdlNew.isEnabled
269
-
270
- if (shouldStart && this.awdlTransportPointer) throw new Error(`Internal inconsistency, when starting AWDL transport, no AWDL transport pointer should exist.`)
271
- if (shouldStop && !this.awdlTransportPointer) throw new Error(`Internal inconsistency, when stopping AWDL transport, an AWDL transport pointer should exist.`)
272
-
273
- if (shouldStart) {
274
- this.awdlTransportPointer = FFI.transportsAWDLCreate(dittoHandle.deref()) as FFI.Pointer<FFI.TransportAWDL> | null
275
- }
276
-
277
- if (shouldStop) {
278
- FFI.transportsAWDLDestroy(this.awdlTransportPointer as FFI.Pointer<FFI.TransportAWDL>)
279
- this.awdlTransportPointer = null
280
- }
281
- })
282
- }
283
-
284
- private updatePeerToPeerLAN(stateOld: SyncState, stateNew: SyncState) {
285
- if (!Environment.isNodeBuild && !Environment.isReactNativeBuild) return
286
-
287
- const ditto = this.ditto
288
- const dittoHandle = Bridge.ditto.handleFor(ditto)
289
- ditto.deferClose(() => {
290
- const lanOld = stateOld.effectiveTransportConfig.peerToPeer.lan
291
- const lanNew = stateNew.effectiveTransportConfig.peerToPeer.lan
292
-
293
-
294
- if (process.platform === 'win32' || process.platform === 'linux') {
295
- if (lanOld.isEnabled) {
296
- if (lanOld.isMdnsEnabled) {
297
- if (this.mdnsClientTransportPointer == null) throw new Error(`Internal inconsistency, when stopping LAN transport, a LAN transport pointer should exist.`)
298
- FFI.mdnsClientFreeHandle(this.mdnsClientTransportPointer)
299
- this.mdnsClientTransportPointer = null
300
-
301
- if (this.mdnsServerAdvertiserPointer == null) throw new Error(`Internal inconsistency, when stopping LAN transport, a LAN transport pointer should exist.`)
302
- FFI.mdnsServerFreeHandle(this.mdnsServerAdvertiserPointer)
303
- this.mdnsServerAdvertiserPointer = null
304
- }
305
-
306
- if (lanOld.isMulticastEnabled) {
307
- FFI.dittoRemoveMulticastTransport(dittoHandle.deref())
308
- }
309
- }
310
-
311
- if (lanNew.isEnabled) {
312
- if (lanNew.isMdnsEnabled) {
313
- this.mdnsClientTransportPointer = FFI.dittoAddInternalMdnsTransport(dittoHandle.deref())
314
- this.mdnsServerAdvertiserPointer = FFI.dittoAddInternalMdnsAdvertiser(dittoHandle.deref())
315
- }
316
-
317
- if (lanNew.isMulticastEnabled) {
318
- FFI.dittoAddMulticastTransport(dittoHandle.deref())
319
- }
320
- }
321
-
322
- return
323
- }
324
-
325
-
326
- if (lanOld.isEnabled) {
327
- if (lanOld.isMdnsEnabled) {
328
- if (this.lanTransportPointer == null) throw new Error(`Internal inconsistency, when stopping LAN transport, a LAN transport pointer should exist.`)
329
- FFI.transportsLANDestroy(this.lanTransportPointer as FFI.Pointer<FFI.TransportLAN>)
330
- this.lanTransportPointer = null
331
- }
332
-
333
- if (lanOld.isMulticastEnabled) {
334
- FFI.dittoRemoveMulticastTransport(dittoHandle.deref())
335
- }
336
- }
337
-
338
- if (lanNew.isEnabled) {
339
- if (lanNew.isMdnsEnabled) {
340
- if (this.lanTransportPointer != null) throw new Error(`Internal inconsistency, when starting LAN transport, no LAN transport pointer should exist.`)
341
- this.lanTransportPointer = FFI.transportsLANCreate(dittoHandle.deref()) as FFI.Pointer<FFI.TransportLAN>
342
- }
343
-
344
- if (lanNew.isMulticastEnabled) {
345
- FFI.dittoAddMulticastTransport(dittoHandle.deref())
346
- }
347
- }
348
- })
349
- }
350
-
351
- private updateListenTCP(stateOld: SyncState, stateNew: SyncState) {
352
- const ditto = this.ditto
353
- const dittoHandle = Bridge.ditto.handleFor(ditto)
354
- ditto.deferClose(() => {
355
- const tcpOld = stateOld.effectiveTransportConfig.listen.tcp
356
- const tcpNew = stateNew.effectiveTransportConfig.listen.tcp
357
-
358
- if (TransportConfig.areListenTCPsEqual(tcpNew, tcpOld)) return
359
-
360
- if (tcpOld.isEnabled) FFI.dittoStopTCPServer(dittoHandle.deref())
361
- if (tcpNew.isEnabled) FFI.dittoStartTCPServer(dittoHandle.deref(), `${tcpNew.interfaceIP}:${tcpNew.port}`)
362
- })
363
- }
364
-
365
- private updateListenHTTP(stateOld: SyncState, stateNew: SyncState) {
366
- const ditto = this.ditto
367
- const dittoHandle = Bridge.ditto.handleFor(ditto)
368
- ditto.deferClose(() => {
369
- const httpOld = stateOld.effectiveTransportConfig.listen.http
370
- const httpNew = stateNew.effectiveTransportConfig.listen.http
371
-
372
- if (TransportConfig.areListenHTTPsEqual(httpOld, httpNew)) return
373
- if (httpOld.isEnabled) FFI.dittoStopHTTPServer(dittoHandle.deref())
374
-
375
- /* eslint-disable */
376
- if (httpNew.isEnabled) {
377
- FFI.dittoStartHTTPServer(dittoHandle.deref(), `${httpNew.interfaceIP}:${httpNew.port}`, httpNew.staticContentPath || null, httpNew.websocketSync ? 'Enabled' : 'Disabled', httpNew.tlsCertificatePath || null, httpNew.tlsKeyPath || null)
378
- }
379
- /* eslint-enable */
380
- })
381
- }
382
-
383
- private updateConnectTCPServers(stateOld: SyncState, stateNew: SyncState) {
384
- const ditto = this.ditto
385
- const dittoHandle = Bridge.ditto.handleFor(ditto)
386
- ditto.deferClose(() => {
387
- const tcpServers = stateNew.effectiveTransportConfig.connect.tcpServers
388
- FFI.dittoSetStaticTCPClients(dittoHandle.deref(), tcpServers)
389
- })
390
- }
391
-
392
- private updateConnectWebsocketURLs(stateOld: SyncState, stateNew: SyncState) {
393
- const ditto = this.ditto
394
- const dittoHandle = Bridge.ditto.handleFor(ditto)
395
- ditto.deferClose(() => {
396
- const websocketURLs = stateNew.effectiveTransportConfig.connect.websocketURLs
397
- const routingHint = stateNew.effectiveTransportConfig.global.routingHint
398
- FFI.dittoSetStaticWebsocketClients(dittoHandle.deref(), websocketURLs, routingHint)
399
- })
400
- }
401
-
402
- private updateGlobal(stateOld: SyncState, stateNew: SyncState) {
403
- const ditto = this.ditto
404
- const dittoHandle = Bridge.ditto.handleFor(ditto)
405
- ditto.deferClose(() => {
406
- if (stateOld.effectiveTransportConfig.global.syncGroup !== stateNew.effectiveTransportConfig.global.syncGroup) {
407
- FFI.dittoSetSyncGroup(dittoHandle.deref(), stateNew.effectiveTransportConfig.global.syncGroup)
408
- }
409
- })
410
- }
411
-
412
- private updateConnectRetryInterval(stateOld: SyncState, stateNew: SyncState) {
413
- const ditto = this.ditto
414
- const dittoHandle = Bridge.ditto.handleFor(ditto)
415
- ditto.deferClose(() => {
416
- FFI.dittoSetConnectRetryInterval(dittoHandle.deref(), stateNew.effectiveTransportConfig.connect.retryInterval)
417
- })
418
- }
419
- }
420
-
421
- /**
422
- * @private
423
- */
424
- function stateFrom(parameters: SyncParameters): SyncState {
425
- const ditto = parameters.ditto
426
- const dittoHandle = Bridge.ditto.handleFor(ditto)
427
- return ditto.deferClose(() => {
428
-
429
-
430
- const transportConfig = parameters.transportConfig.copy()
431
- const identity = parameters.identity
432
-
433
- const isSyncActive = parameters.isSyncActive
434
- const isX509Valid = parameters.isX509Valid
435
- const isWebValid = parameters.isWebValid
436
-
437
- let appID
438
- let customDittoCloudURL
439
- let isDittoCloudSyncEnabled = false
440
-
441
- if (identity.type === 'onlinePlayground' || identity.type === 'onlineWithAuthentication') {
442
- appID = identity.appID
443
- customDittoCloudURL = identity.customDittoCloudURL ?? null
444
- isDittoCloudSyncEnabled = identity.enableDittoCloudSync ?? true
445
- }
446
-
447
- const unavailableButEnabledP2PTransports = []
448
-
449
- const isBLEAvailable = FFI.transportsBLEIsAvailable(dittoHandle.deref())
450
- const isAWDLAvailable = FFI.transportsAWDLIsAvailable(dittoHandle.deref())
451
- const isLANAvailable = FFI.transportsLANIsAvailable(dittoHandle.deref())
452
-
453
- if (transportConfig.peerToPeer.bluetoothLE.isEnabled && !isBLEAvailable) {
454
- unavailableButEnabledP2PTransports.push('BluetoothLE')
455
- }
456
-
457
- if (transportConfig.peerToPeer.awdl.isEnabled && !isAWDLAvailable) {
458
- unavailableButEnabledP2PTransports.push('AWDL')
459
- }
460
-
461
- if (transportConfig.peerToPeer.lan.isEnabled && !isLANAvailable) {
462
- unavailableButEnabledP2PTransports.push('LAN')
463
- }
464
-
465
- if (unavailableButEnabledP2PTransports.length > 0) {
466
- throw new Error(`The following P2P transports are enabled in the transport config but are not supported in the current environment: ${unavailableButEnabledP2PTransports.join(', ')}`)
467
- }
468
-
469
- if (!isSyncActive || !isX509Valid) {
470
- transportConfig.peerToPeer.bluetoothLE.isEnabled = false
471
- transportConfig.peerToPeer.awdl.isEnabled = false
472
- transportConfig.peerToPeer.lan.isEnabled = false
473
- transportConfig.listen.tcp.isEnabled = false
474
- transportConfig.connect.tcpServers = []
475
- }
476
-
477
- if (!isSyncActive || !isWebValid) {
478
- transportConfig.connect.websocketURLs = []
479
- }
480
-
481
- if (!isSyncActive) {
482
- transportConfig.listen.http.isEnabled = false
483
- }
484
-
485
- if (isSyncActive && isWebValid && isDittoCloudSyncEnabled) {
486
- const dittoCloudURL = customDittoCloudURL ?? defaultDittoCloudURL(appID)
487
- transportConfig.connect.websocketURLs.push(dittoCloudURL)
488
- }
489
-
490
- return {
491
- underlyingSyncParameters: parameters,
492
- effectiveTransportConfig: transportConfig.freeze(),
493
- }
494
- })
495
- }
@@ -1,24 +0,0 @@
1
- import { Bridge } from './bridge'
2
-
3
- /**
4
- * Get a count of bridged objects binned by bridge type.
5
- *
6
- * Use this in testing to ensure that all objects are properly garbage collected at the end of tests.
7
- *
8
- * @returns an object with a key per bridge type, set to the count of registered
9
- * objects.
10
- */
11
- export function getBridgeLoad(): { [bridgeName: string]: number } {
12
- const countsByType: { [bridgeName: string]: number } = {}
13
- Bridge.all.map((bridgeWeakRef) => {
14
- const bridge = bridgeWeakRef.deref()
15
- if (!bridge) {
16
- return null
17
- }
18
- if (bridge.count === 0) {
19
- return null
20
- }
21
- countsByType[bridge.type.name] = bridge.count
22
- })
23
- return countsByType
24
- }
@@ -1,104 +0,0 @@
1
- //
2
- // Copyright © 2021 DittoLive Incorporated. All rights reserved.
3
- //
4
-
5
- import * as FFI from './ffi'
6
-
7
- import { Bridge } from './bridge'
8
- import { ObserverManager } from './observer-manager'
9
-
10
- import type { Ditto, TransportCondition, ConditionSource } from './ditto'
11
-
12
- /** @internal */
13
- export class TransportConditionsManager extends ObserverManager {
14
- readonly ditto: Ditto
15
-
16
- constructor(ditto: Ditto) {
17
- const keepAlive = ditto.keepAlive
18
- super('TransportConditionsObservation', { keepAlive })
19
- this.ditto = ditto
20
- }
21
-
22
- protected register(callback: (...args: any[]) => void) {
23
- const ditto = this.ditto
24
- const dittoHandle = Bridge.ditto.handleFor(ditto)
25
- return ditto.deferClose(() => {
26
- return FFI.dittoRegisterTransportConditionChangedCallback(dittoHandle.deref(), callback)
27
- })
28
- }
29
-
30
- protected unregister() {
31
- const ditto = this.ditto
32
- const dittoHandle = Bridge.ditto.handleFor(ditto)
33
- return ditto.deferClose(() => {
34
- return FFI.dittoRegisterTransportConditionChangedCallback(dittoHandle.deref(), null)
35
- })
36
- }
37
-
38
- protected process(conditionSource: FFI.ConditionSource, transportCondition: FFI.TransportCondition): [TransportCondition, ConditionSource] {
39
- /* eslint-disable */
40
- let apiConditionSource: ConditionSource
41
- switch (conditionSource) {
42
- case 'Bluetooth':
43
- apiConditionSource = 'BLE'
44
- break
45
- case 'Tcp':
46
- apiConditionSource = 'TCP'
47
- break
48
- case 'Awdl':
49
- apiConditionSource = 'AWDL'
50
- break
51
- case 'Mdns':
52
- apiConditionSource = 'MDNS'
53
- break
54
- }
55
- /* eslint-enable */
56
-
57
- /* eslint-disable */
58
- let apiTransportCondition: TransportCondition
59
- switch (transportCondition) {
60
- case 'Unknown':
61
- apiTransportCondition = 'Unknown'
62
- break
63
- case 'Ok':
64
- apiTransportCondition = 'OK'
65
- break
66
- case 'GenericFailure':
67
- apiTransportCondition = 'GenericFailure'
68
- break
69
- case 'AppInBackground':
70
- apiTransportCondition = 'AppInBackground'
71
- break
72
- case 'MdnsFailure':
73
- apiTransportCondition = 'MDNSFailure'
74
- break
75
- case 'TcpListenFailure':
76
- apiTransportCondition = 'TCPListenFailure'
77
- break
78
- case 'NoBleCentralPermission':
79
- apiTransportCondition = 'NoBLECentralPermission'
80
- break
81
- case 'NoBlePeripheralPermission':
82
- apiTransportCondition = 'NoBLEPeripheralPermission'
83
- break
84
- case 'CannotEstablishConnection':
85
- apiTransportCondition = 'CannotEstablishConnection'
86
- break
87
- case 'BleDisabled':
88
- apiTransportCondition = 'BLEDisabled'
89
- break
90
- case 'NoBleHardware':
91
- apiTransportCondition = 'NoBLEHardware'
92
- break
93
- case 'WifiDisabled':
94
- apiTransportCondition = 'WiFiDisabled'
95
- break
96
- case 'TemporarilyUnavailable':
97
- apiTransportCondition = 'TemporarilyUnavailable'
98
- break
99
- }
100
- /* eslint-enable */
101
-
102
- return [apiTransportCondition, apiConditionSource]
103
- }
104
- }