Struct ywasm::YDoc [−][src]
pub struct YDoc(_);
Expand description
A ywasm document type. Documents are most important units of collaborative resources management. All shared collections live within a scope of their corresponding documents. All updates are generated on per document basis (rather than individual shared type). All operations on shared collections happen via YTransaction, which lifetime is also bound to a document.
Document manages so called root types, which are top-level shared types definitions (as opposed to recursively nested types).
A basic workflow sample:
import YDoc from 'ywasm'
const doc = new YDoc()
const txn = doc.beginTransaction()
try {
const text = txn.getText('name')
text.push(txn, 'hello world')
const output = text.toString(txn)
console.log(output)
} finally {
txn.free()
}
Implementations
Creates a new ywasm document. If id
parameter was passed it will be used as this document
globally unique identifier (it’s up to caller to ensure that requirement). Otherwise it will
be assigned a randomly generated number.
Returns a new transaction for this document. Ywasm shared data types execute their operations in a context of a given transaction. Each document can have only one active transaction at the time - subsequent attempts will cause exception to be thrown.
Transactions started with doc.beginTransaction
can be released using transaction.free
method.
Example:
import YDoc from 'ywasm'
// helper function used to simplify transaction
// create/release cycle
YDoc.prototype.transact = callback => {
const txn = this.beginTransaction()
try {
return callback(txn)
} finally {
txn.free()
}
}
const doc = new YDoc()
const text = doc.getText('name')
doc.transact(txn => text.insert(txn, 0, 'hello world'))
Returns a YText
shared data type, that’s accessible for subsequent accesses using given
name
.
If there was no instance with this name before, it will be created and then returned.
If there was an instance with this name, but it was of different type, it will be projected
onto YText
instance.
Returns a YArray
shared data type, that’s accessible for subsequent accesses using given
name
.
If there was no instance with this name before, it will be created and then returned.
If there was an instance with this name, but it was of different type, it will be projected
onto YArray
instance.
Returns a YMap
shared data type, that’s accessible for subsequent accesses using given
name
.
If there was no instance with this name before, it will be created and then returned.
If there was an instance with this name, but it was of different type, it will be projected
onto YMap
instance.
Returns a YXmlElement
shared data type, that’s accessible for subsequent accesses using
given name
.
If there was no instance with this name before, it will be created and then returned.
If there was an instance with this name, but it was of different type, it will be projected
onto YXmlElement
instance.
Returns a YXmlText
shared data type, that’s accessible for subsequent accesses using given
name
.
If there was no instance with this name before, it will be created and then returned.
If there was an instance with this name, but it was of different type, it will be projected
onto YXmlText
instance.
Trait Implementations
The type that holds the reference to Self
for the duration of the
invocation of the function that has an &Self
parameter. This is
required to ensure that the lifetimes don’t persist beyond one function
call, and so that they remain anonymous. Read more
Recover a Self::Anchor
from Self::Abi
. Read more