Initializes a new Ditto
instance.
NOTE: The sharedKey
identity is only supported for Node environments,
using this to create a Ditto instance in the web browser will throw an
exception.
Optional
identity: IdentityIdentity for the new Ditto instance, defaults to
offlinePlayground
with appID
being the empty string ''
.
Optional
path: stringOn Node, path
corresponds to a real directory
on the file system (intermediate directories are created if needed). In the
browser, path
is used as an internal namespace into the backing storage
(in-memory at the moment, support for IndexedDB is in development).
Defaults to "ditto"
.
Readonly
authProvides access to authentication methods for logging on to Ditto Cloud.
Configure a custom identifier for the current device.
When using presence.observe(), each remote peer is represented by a short UTF-8 "device name". By default this will be a truncated version of the device's hostname. It does not need to be unique among peers. Configure the device name before calling startSync(). If it is too long it may be truncated.
Readonly
identityThe (validated) identity this Ditto instance was initialized with.
Readonly
isReturns true
if an offline license token has been set, otherwise returns false
.
Readonly
isReturns true
if sync is active, otherwise returns false
. Use
startSync() to activate and stopSync()
to deactivate sync.
Readonly
pathThe path this Ditto instance was initialized with, if no path was given at construction time, the default value is returned (see constructor).
Readonly
presenceProvides access to the SDK's presence functionality.
Readonly
siteIDThe site ID that the instance of Ditto
is using as part of its identity.
Readonly
storeProvides access to the SDK's store functionality.
Readonly
transportReturns the current transport configuration, frozen. If you want to modify the transport config, make a copy first. Or use the updateTransportConfig() convenience method. By default peer-to-peer transports (Bluetooth, WiFi, and AWDL) are enabled if available in the current environment (Web, Node, OS, etc.).
Returns a string identifying the version of the Ditto SDK.
Explicitly opt-in to disabling the ability to sync with Ditto peers running any version of the SDK in the v2 series of releases.
Assuming this succeeds then this peer will only be able to sync with other peers using SDKs in the v3 series of releases. Note that this disabling of sync spreads to peers that sync with a peer that has disabled, or has (transitively) had disabled, syncing with v2 SDK peers.
Registers an observer for info about Ditto peers in range of this device.
Ditto will prevent the process from exiting as long as there are active peers observers (not relevant when running in the browser).
please use presence.observe() instead.
called immediately with the current state of peers in range and whenever that state changes. Then it will be invoked repeatedly when Ditto devices come and go, or the active connections to them change.
Register observer for changes of underlying transport conditions.
Ditto will prevent the process from exiting as long as there are active transport conditions observers (not relevant when running in the browser).
called when underlying transport conditions change with
the changed condition
and it's source
.
Removes all sync metadata for any remote peers which aren't currently connected. This method shouldn't usually be called. Manually running garbage collection often will result in slower sync times. Ditto automatically runs a garbage a collection process in the background at optimal times.
Manually running garbage collection is typically only useful during testing if large amounts of data are being generated. Alternatively, if an entire data set is to be evicted and it's clear that maintaining this metadata isn't necessary, then garbage collection could be run after evicting the old data.
Only available in Node environments at the moment, no-op in the browser.
Activate a Ditto
instance by setting an offline only license token. You cannot initiate sync
with Ditto
before you have activated it. The offline license token is only valid for identities
of type development
, manual
, offlinePlayground
, and sharedKey
.
the license token to activate the Ditto
instance
with. You can find yours on the Ditto portal.
Assigns a new transports configuration. By default peer-to-peer transports (Bluetooth, WiFi, and AWDL) are enabled. You may use this method to alter the configuration at any time, however sync will not begin until startSync() is called.
Starts the network transports. Ditto will connect to other devices.
By default Ditto will enable all peer-to-peer transport types. On Node, this means BluetoothLE, WiFi/LAN, and AWDL. On the Web, only connecting via Websockets is supported. The network configuration can be customized with updateTransportConfig() or replaced entirely with setTransportConfig().
Ditto will prevent the process from exiting until sync is stopped (not relevant when running in the browser).
NOTE: the BluetoothLE transport on Linux is experimental, this method panics if no BluetoothLE hardware is available. Therefore, contrary to the above, the BluetoothLE transport is temporarily disabled by default on Linux.
Convenience method for updating the transport config. Creates a copy of the
current transport config, passes that copy to the update
closure,
allowing it to mutate as needed, and sets that updated copy afterwards.
Ditto is the entry point for accessing Ditto-related functionality.