BlockSuite API Documentation / @blocksuite/sync
@blocksuite/sync
Enumerations
DocEngineStep
Enumeration Members
Stopped
Stopped:
0
Synced
Synced:
2
Syncing
Syncing:
1
DocPeerStep
Enumeration Members
Loaded
Loaded:
4.5
LoadingRootDoc
LoadingRootDoc:
2
LoadingSubDoc
LoadingSubDoc:
3
Retrying
Retrying:
1
Stopped
Stopped:
0
Synced
Synced:
6
Syncing
Syncing:
5
Classes
AwarenessEngine
Constructors
Constructor
new AwarenessEngine(
awareness,sources):AwarenessEngine
Parameters
awareness
Awareness
sources
Returns
Properties
awareness
readonlyawareness:Awareness
sources
readonlysources:AwarenessSource[]
Methods
connect()
connect():
void
Returns
void
disconnect()
disconnect():
void
Returns
void
BlobEngine
BlobEngine
sync blobs between storages in background.
all operations priority use main, then use shadows.
Constructors
Constructor
new BlobEngine(
main,shadows,logger):BlobEngine
Parameters
main
shadows
logger
Logger
Returns
Properties
logger
readonlylogger:Logger
main
readonlymain:BlobSource
shadows
readonlyshadows:BlobSource[]
Accessors
sources
Get Signature
get sources():
BlobSource[]
Returns
Methods
blobState$()
blobState$(
key):Observable<BlobState> |null
Parameters
key
string
Returns
Observable<BlobState> | null
delete()
delete(
_key):Promise<void>
Parameters
_key
string
Returns
Promise<void>
get()
get(
key):Promise<Blob|null>
Parameters
key
string
Returns
Promise<Blob | null>
list()
list():
Promise<string[]>
Returns
Promise<string[]>
set()
Call Signature
set(
value):Promise<string>
Parameters
value
Blob
Returns
Promise<string>
Call Signature
set(
key,value):Promise<string>
Parameters
key
string
value
Blob
Returns
Promise<string>
start()
start():
void
Returns
void
stop()
stop():
void
Returns
void
sync()
sync():
Promise<void>
Returns
Promise<void>
upload()
upload(
key):Promise<boolean> |null
Parameters
key
string
Returns
Promise<boolean> | null
BroadcastChannelAwarenessSource
Implements
Constructors
Constructor
new BroadcastChannelAwarenessSource(
channelName):BroadcastChannelAwarenessSource
Parameters
channelName
string
Returns
BroadcastChannelAwarenessSource
Properties
awareness
awareness:
Awareness|null=null
channel
channel:
BroadcastChannel|null=null
channelName
readonlychannelName:string
Methods
connect()
connect(
awareness):void
Parameters
awareness
Awareness
Returns
void
Implementation of
disconnect()
disconnect():
void
Returns
void
Implementation of
handleAwarenessUpdate()
handleAwarenessUpdate(
changes,origin):void
Parameters
changes
AwarenessChanges
origin
unknown
Returns
void
handleChannelMessage()
handleChannelMessage(
event):void
Parameters
event
MessageEvent<ChannelMessage>
Returns
void
BroadcastChannelDocSource
Implements
Constructors
Constructor
new BroadcastChannelDocSource(
channelName):BroadcastChannelDocSource
Parameters
channelName
string = 'blocksuite:doc'
Returns
Properties
channel
channel:
BroadcastChannel
channelName
readonlychannelName:string='blocksuite:doc'
docMap
docMap:
Map<string,Uint8Array<ArrayBufferLike>>
name
name:
string='broadcast-channel'
for debug
Implementation of
Methods
pull()
pull(
docId,state): {data:Uint8Array<ArrayBufferLike>;state:Uint8Array<ArrayBufferLike>; } |null
Parameters
docId
string
state
Uint8Array
Returns
{ data: Uint8Array<ArrayBufferLike>; state: Uint8Array<ArrayBufferLike>; } | null
Implementation of
push()
push(
docId,data):void
Parameters
docId
string
data
Uint8Array
Returns
void
Implementation of
subscribe()
subscribe(
cb): () =>void
Subscribe to updates from peer
Parameters
cb
(docId, data) => void
callback to handle updates
Returns
unsubscribe function
():
void
Returns
void
Implementation of
DocEngine
DocEngine
┌────────────┐
│ DocEngine │
└─────┬──────┘
│
▼
┌────────────┐
│ DocPeer │
┌─────────┤ main ├─────────┐
│ └─────┬──────┘ │
│ │ │
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ DocPeer │ │ DocPeer │ │ DocPeer │
│ shadow │ │ shadow │ │ shadow │
└────────────┘ └────────────┘ └────────────┘doc engine manage doc peers
Sync steps:
- start main sync
- wait for main sync complete
- start shadow sync
- continuously sync main and shadows
Constructors
Constructor
new DocEngine(
rootDoc,main,shadows,logger):DocEngine
Parameters
rootDoc
Doc
main
shadows
logger
Logger
Returns
Properties
logger
readonlylogger:Logger
main
readonlymain:DocSource
onStatusChange
readonlyonStatusChange:Subject<DocEngineStatus>
priorityTarget
readonlypriorityTarget:SharedPriorityTarget
rootDoc
readonlyrootDoc:Doc
shadows
readonlyshadows:DocSource[]
Accessors
rootDocId
Get Signature
get rootDocId():
string
Returns
string
status
Get Signature
get status():
DocEngineStatus
Returns
Methods
canGracefulStop()
canGracefulStop():
boolean
Returns
boolean
forceStop()
forceStop():
void
Returns
void
setPriorityRule()
setPriorityRule(
target):void
Parameters
target
(id) => boolean | null
Returns
void
start()
start():
void
Returns
void
sync()
sync(
signal):Promise<void>
Parameters
signal
AbortSignal
Returns
Promise<void>
updateSyncingState()
updateSyncingState(
local,shadows):void
Parameters
local
SyncPeer | null
shadows
(SyncPeer | null)[]
Returns
void
waitForGracefulStop()
waitForGracefulStop(
abort?):Promise<void>
Parameters
abort?
AbortSignal
Returns
Promise<void>
waitForLoadedRootDoc()
waitForLoadedRootDoc(
abort?):Promise<unknown>
Parameters
abort?
AbortSignal
Returns
Promise<unknown>
waitForSynced()
waitForSynced(
abort?):Promise<unknown>
Parameters
abort?
AbortSignal
Returns
Promise<unknown>
IndexedDBBlobSource
Implements
Constructors
Constructor
new IndexedDBBlobSource(
name):IndexedDBBlobSource
Parameters
name
string
Returns
Properties
mimeTypeStore
readonlymimeTypeStore:UseStore
name
readonlyname:string
Implementation of
readonly
readonly:
boolean=false
Implementation of
store
readonlystore:UseStore
Methods
delete()
delete(
key):Promise<void>
Parameters
key
string
Returns
Promise<void>
Implementation of
get()
get(
key):Promise<Blob|null>
Parameters
key
string
Returns
Promise<Blob | null>
Implementation of
list()
list():
Promise<string[]>
Returns
Promise<string[]>
Implementation of
set()
set(
key,value):Promise<string>
Parameters
key
string
value
Blob
Returns
Promise<string>
Implementation of
IndexedDBDocSource
Implements
Constructors
Constructor
new IndexedDBDocSource(
dbName):IndexedDBDocSource
Parameters
dbName
string = DEFAULT_DB_NAME
Returns
Properties
channel
channel:
BroadcastChannel
dbName
readonlydbName:string=DEFAULT_DB_NAME
dbPromise
dbPromise:
Promise<IDBPDatabase<BlockSuiteBinaryDB>> |null=null
mergeCount
mergeCount:
number=1
name
name:
string='indexeddb'
for debug
Implementation of
Methods
getDb()
getDb():
Promise<IDBPDatabase<BlockSuiteBinaryDB>>
Returns
Promise<IDBPDatabase<BlockSuiteBinaryDB>>
pull()
pull(
docId,state):Promise<{data:Uint8Array;state?:Uint8Array<ArrayBufferLike>; } |null>
Parameters
docId
string
state
Uint8Array
Returns
Promise<{ data: Uint8Array; state?: Uint8Array<ArrayBufferLike>; } | null>
Implementation of
push()
push(
docId,data):Promise<void>
Parameters
docId
string
data
Uint8Array
Returns
Promise<void>
Implementation of
subscribe()
subscribe(
cb): () =>void
Subscribe to updates from peer
Parameters
cb
(docId, data) => void
callback to handle updates
Returns
unsubscribe function
():
void
Returns
void
Implementation of
MemoryBlobSource
Implements
Constructors
Constructor
new MemoryBlobSource():
MemoryBlobSource
Returns
Properties
map
readonlymap:Map<string,Blob>
name
name:
string='memory'
Implementation of
readonly
readonly:
boolean=false
Implementation of
Methods
delete()
delete(
key):Promise<void>
Parameters
key
string
Returns
Promise<void>
Implementation of
get()
get(
key):Promise<Blob|null>
Parameters
key
string
Returns
Promise<Blob | null>
Implementation of
list()
list():
Promise<string[]>
Returns
Promise<string[]>
Implementation of
set()
set(
key,value):Promise<string>
Parameters
key
string
value
Blob
Returns
Promise<string>
Implementation of
NoopDocSource
Implements
Constructors
Constructor
new NoopDocSource():
NoopDocSource
Returns
Properties
name
name:
string='noop'
for debug
Implementation of
Methods
pull()
pull(
_docId,_data):null
Parameters
_docId
string
_data
Uint8Array
Returns
null
Implementation of
push()
push(
_docId,_data):void
Parameters
_docId
string
_data
Uint8Array
Returns
void
Implementation of
subscribe()
subscribe(
_cb,_disconnect): () =>void
Subscribe to updates from peer
Parameters
_cb
(docId, data) => void
callback to handle updates
_disconnect
(reason) => void
callback to handle disconnect, reason can be something like 'network-error'
Returns
unsubscribe function
():
void
Returns
void
Implementation of
SyncPeer
DocPeer
A DocPeer is responsible for syncing one Storage with one Y.Doc and its subdocs.
┌─────┐
│Start│
└──┬──┘
│
┌──────┐ ┌─────▼──────┐ ┌────┐
│listen◄─────┤pull rootdoc│ │peer│
└──┬───┘ └─────┬──────┘ └──┬─┘
│ │ onLoad() │
┌──▼───┐ ┌─────▼──────┐ ┌────▼────┐
│listen◄─────┤pull subdocs│ │subscribe│
└──┬───┘ └─────┬──────┘ └────┬────┘
│ │ onReady() │
┌──▼──┐ ┌─────▼───────┐ ┌──▼──┐
│queue├──────►apply updates◄───────┤queue│
└─────┘ └─────────────┘ └─────┘listen: listen for updates from ydoc, typically from user modifications. subscribe: listen for updates from storage, typically from other users.
Constructors
Constructor
new SyncPeer(
rootDoc,source,priorityTarget,logger):SyncPeer
Parameters
rootDoc
Doc
source
priorityTarget
SharedPriorityTarget = ...
logger
Logger
Returns
Properties
abort
readonlyabort:AbortController
logger
readonlylogger:Logger
onStatusChange
readonlyonStatusChange:Subject<DocPeerStatus>
priorityTarget
readonlypriorityTarget:SharedPriorityTarget
rootDoc
readonlyrootDoc:Doc
source
readonlysource:DocSource
state
readonlystate:object
connectedDocs
connectedDocs:
Map<string,Doc>
pullUpdatesQueue
pullUpdatesQueue:
PriorityAsyncQueue<{data:Uint8Array;id:string; }>
pushingUpdate
pushingUpdate:
boolean
pushUpdatesQueue
pushUpdatesQueue:
PriorityAsyncQueue<{data:Uint8Array<ArrayBufferLike>[];id:string; }>
subdocLoading
subdocLoading:
boolean
subdocsLoadQueue
subdocsLoadQueue:
PriorityAsyncQueue<{doc:Doc;id:string; }>
Accessors
name
Get Signature
get name():
string
Returns
string
Methods
connectDoc()
connectDoc(
doc,abort):Promise<void>
Parameters
doc
Doc
abort
AbortSignal
Returns
Promise<void>
disconnectDoc()
disconnectDoc(
doc):void
Parameters
doc
Doc
Returns
void
handleStorageUpdates()
handleStorageUpdates(
id,data):void
Parameters
id
string
data
Uint8Array
Returns
void
handleSubdocsUpdate()
handleSubdocsUpdate(
__namedParameters):void
Parameters
__namedParameters
added
Set<Doc>
removed
Set<Doc>
Returns
void
handleYDocUpdates()
handleYDocUpdates(
update,origin,doc):void
Parameters
update
Uint8Array
origin
string
doc
Doc
Returns
void
initState()
initState():
void
Returns
void
stop()
stop():
void
stop sync
DocPeer is one-time use, this peer should be discarded after call stop().
Returns
void
sync()
sync(
abortOuter):Promise<void>
main synchronization logic
Parameters
abortOuter
AbortSignal
Returns
Promise<void>
syncRetryLoop()
syncRetryLoop(
abort):Promise<void>
auto retry after 5 seconds if sync failed
Parameters
abort
AbortSignal
Returns
Promise<void>
updateSyncStatus()
updateSyncStatus():
void
Returns
void
waitForLoaded()
waitForLoaded(
abort?):Promise<void>
Parameters
abort?
AbortSignal
Returns
Promise<void>
waitForSynced()
waitForSynced(
abort?):Promise<void>
Parameters
abort?
AbortSignal
Returns
Promise<void>
Interfaces
AwarenessSource
Methods
connect()
connect(
awareness):void
Parameters
awareness
Awareness
Returns
void
disconnect()
disconnect():
void
Returns
void
BlobSource
Properties
blobState$()?
optionalblobState$: (key) =>Observable<BlobState> |null
Parameters
key
string
Returns
Observable<BlobState> | null
delete()
delete: (
key) =>Promise<void>
Parameters
key
string
Returns
Promise<void>
get()
get: (
key) =>Promise<Blob|null>
Parameters
key
string
Returns
Promise<Blob | null>
list()
list: () =>
Promise<string[]>
Returns
Promise<string[]>
name
name:
string
readonly
readonly:
boolean
set()
set: (
key,value) =>Promise<string>
Parameters
key
string
value
Blob
Returns
Promise<string>
upload()?
optionalupload: (key) =>Promise<boolean>
Parameters
key
string
Returns
Promise<boolean>
BlobState
Properties
downloading
downloading:
boolean
errorMessage?
optionalerrorMessage:string|null
needDownload
needDownload:
boolean
needUpload
needUpload:
boolean
overSize
overSize:
boolean
uploading
uploading:
boolean
BlobStatus
Properties
isStorageOverCapacity
isStorageOverCapacity:
boolean
DocEngineStatus
Properties
main
main:
DocPeerStatus|null
retrying
retrying:
boolean
shadows
shadows: (
DocPeerStatus|null)[]
step
step:
DocEngineStep
DocPeerStatus
Properties
loadedDocs
loadedDocs:
number
pendingPullUpdates
pendingPullUpdates:
number
pendingPushUpdates
pendingPushUpdates:
number
step
step:
DocPeerStep
totalDocs
totalDocs:
number
DocSource
Properties
name
name:
string
for debug
Methods
pull()
pull(
docId,state):Promise<{data:Uint8Array;state?:Uint8Array<ArrayBufferLike>; } |null> | {data:Uint8Array;state?:Uint8Array<ArrayBufferLike>; } |null
Parameters
docId
string
state
Uint8Array
Returns
Promise<{ data: Uint8Array; state?: Uint8Array<ArrayBufferLike>; } | null> | { data: Uint8Array; state?: Uint8Array<ArrayBufferLike>; } | null
push()
push(
docId,data):void|Promise<void>
Parameters
docId
string
data
Uint8Array
Returns
void | Promise<void>
subscribe()
subscribe(
cb,disconnect):Promise<() =>void> | () =>void
Subscribe to updates from peer
Parameters
cb
(docId, data) => void
callback to handle updates
disconnect
(reason) => void
callback to handle disconnect, reason can be something like 'network-error'
Returns
Promise<() => void> | () => void
unsubscribe function
Variables
dbVersion
constdbVersion:1=1
DEFAULT_DB_NAME
constDEFAULT_DB_NAME:"blocksuite-local"='blocksuite-local'
Functions
upgradeDB()
upgradeDB(
db):void
Parameters
db
IDBPDatabase<BlockSuiteBinaryDB>
Returns
void