Implement experimental new encoder 🚀

This commit is contained in:
Kevin Jahns
2020-07-12 18:25:45 +02:00
parent e31e968f0d
commit 6c2cf0f769
36 changed files with 1224 additions and 336 deletions

View File

@@ -11,13 +11,12 @@ import {
ContentAny,
ContentBinary,
getItemCleanStart,
ID, Doc, Snapshot, Transaction, EventHandler, YEvent, Item, // eslint-disable-line
AbstractUpdateEncoder, Doc, Snapshot, Transaction, EventHandler, YEvent, Item, // eslint-disable-line
} from '../internals.js'
import * as map from 'lib0/map.js'
import * as iterator from 'lib0/iterator.js'
import * as error from 'lib0/error.js'
import * as encoding from 'lib0/encoding.js' // eslint-disable-line
/**
* Accumulate all (list) children of a type and return them as an Array.
@@ -116,7 +115,7 @@ export class AbstractType {
}
/**
* @param {encoding.Encoder} encoder
* @param {AbstractUpdateEncoder} encoder
*/
_write (encoder) { }

View File

@@ -15,12 +15,9 @@ import {
YArrayRefID,
callTypeObservers,
transact,
Doc, Transaction, Item // eslint-disable-line
AbstractUpdateDecoder, AbstractUpdateEncoder, Doc, Transaction, Item // eslint-disable-line
} from '../internals.js'
import * as decoding from 'lib0/decoding.js' // eslint-disable-line
import * as encoding from 'lib0/encoding.js'
/**
* Event that describes the changes on a YArray
* @template T
@@ -204,15 +201,15 @@ export class YArray extends AbstractType {
}
/**
* @param {encoding.Encoder} encoder
* @param {AbstractUpdateEncoder} encoder
*/
_write (encoder) {
encoding.writeVarUint(encoder, YArrayRefID)
encoder.writeTypeRef(YArrayRefID)
}
}
/**
* @param {decoding.Decoder} decoder
* @param {AbstractUpdateDecoder} decoder
*
* @private
* @function

View File

@@ -14,11 +14,9 @@ import {
YMapRefID,
callTypeObservers,
transact,
Doc, Transaction, Item // eslint-disable-line
AbstractUpdateDecoder, AbstractUpdateEncoder, Doc, Transaction, Item // eslint-disable-line
} from '../internals.js'
import * as encoding from 'lib0/encoding.js'
import * as decoding from 'lib0/decoding.js' // eslint-disable-line
import * as iterator from 'lib0/iterator.js'
/**
@@ -229,15 +227,15 @@ export class YMap extends AbstractType {
}
/**
* @param {encoding.Encoder} encoder
* @param {AbstractUpdateEncoder} encoder
*/
_write (encoder) {
encoding.writeVarUint(encoder, YMapRefID)
encoder.writeTypeRef(YMapRefID)
}
}
/**
* @param {decoding.Decoder} decoder
* @param {AbstractUpdateDecoder} decoder
*
* @private
* @function

View File

@@ -20,11 +20,9 @@ import {
splitSnapshotAffectedStructs,
iterateDeletedStructs,
iterateStructs,
ID, Doc, Item, Snapshot, Transaction // eslint-disable-line
AbstractUpdateDecoder, AbstractUpdateEncoder, ID, Doc, Item, Snapshot, Transaction // eslint-disable-line
} from '../internals.js'
import * as decoding from 'lib0/decoding.js' // eslint-disable-line
import * as encoding from 'lib0/encoding.js'
import * as object from 'lib0/object.js'
import * as map from 'lib0/map.js'
@@ -1096,15 +1094,15 @@ export class YText extends AbstractType {
}
/**
* @param {encoding.Encoder} encoder
* @param {AbstractUpdateEncoder} encoder
*/
_write (encoder) {
encoding.writeVarUint(encoder, YTextRefID)
encoder.writeTypeRef(YTextRefID)
}
}
/**
* @param {decoding.Decoder} decoder
* @param {AbstractUpdateDecoder} decoder
* @return {YText}
*
* @private

View File

@@ -8,12 +8,9 @@ import {
typeMapGetAll,
typeListForEach,
YXmlElementRefID,
Snapshot, Doc, Item // eslint-disable-line
AbstractUpdateDecoder, AbstractUpdateEncoder, Snapshot, Doc, Item // eslint-disable-line
} from '../internals.js'
import * as encoding from 'lib0/encoding.js'
import * as decoding from 'lib0/decoding.js'
/**
* An YXmlElement imitates the behavior of a
* {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}.
@@ -181,18 +178,18 @@ export class YXmlElement extends YXmlFragment {
*
* This is called when this Item is sent to a remote peer.
*
* @param {encoding.Encoder} encoder The encoder to write data to.
* @param {AbstractUpdateEncoder} encoder The encoder to write data to.
*/
_write (encoder) {
encoding.writeVarUint(encoder, YXmlElementRefID)
encoding.writeVarString(encoder, this.nodeName)
encoder.writeTypeRef(YXmlElementRefID)
encoder.writeKey(this.nodeName)
}
}
/**
* @param {decoding.Decoder} decoder
* @param {AbstractUpdateDecoder} decoder
* @return {YXmlElement}
*
* @function
*/
export const readYXmlElement = decoder => new YXmlElement(decoding.readVarString(decoder))
export const readYXmlElement = decoder => new YXmlElement(decoder.readKey())

View File

@@ -14,12 +14,9 @@ import {
YXmlFragmentRefID,
callTypeObservers,
transact,
Doc, ContentType, Transaction, Item, YXmlText, YXmlHook, Snapshot // eslint-disable-line
AbstractUpdateDecoder, AbstractUpdateEncoder, Doc, ContentType, Transaction, Item, YXmlText, YXmlHook, Snapshot // eslint-disable-line
} from '../internals.js'
import * as encoding from 'lib0/encoding.js'
import * as decoding from 'lib0/decoding.js' // eslint-disable-line
/**
* Define the elements to which a set of CSS queries apply.
* {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors|CSS_Selectors}
@@ -325,15 +322,15 @@ export class YXmlFragment extends AbstractType {
*
* This is called when this Item is sent to a remote peer.
*
* @param {encoding.Encoder} encoder The encoder to write data to.
* @param {AbstractUpdateEncoder} encoder The encoder to write data to.
*/
_write (encoder) {
encoding.writeVarUint(encoder, YXmlFragmentRefID)
encoder.writeTypeRef(YXmlFragmentRefID)
}
}
/**
* @param {decoding.Decoder} decoder
* @param {AbstractUpdateDecoder} decoder
* @return {YXmlFragment}
*
* @private

View File

@@ -1,10 +1,9 @@
import {
YMap,
YXmlHookRefID
YXmlHookRefID,
AbstractUpdateDecoder, AbstractUpdateEncoder // eslint-disable-line
} from '../internals.js'
import * as encoding from 'lib0/encoding.js'
import * as decoding from 'lib0/decoding.js'
/**
* You can manage binding to a custom type with YXmlHook.
@@ -66,21 +65,20 @@ export class YXmlHook extends YMap {
*
* This is called when this Item is sent to a remote peer.
*
* @param {encoding.Encoder} encoder The encoder to write data to.
* @param {AbstractUpdateEncoder} encoder The encoder to write data to.
*/
_write (encoder) {
super._write(encoder)
encoding.writeVarUint(encoder, YXmlHookRefID)
encoding.writeVarString(encoder, this.hookName)
encoder.writeTypeRef(YXmlHookRefID)
encoder.writeKey(this.hookName)
}
}
/**
* @param {decoding.Decoder} decoder
* @param {AbstractUpdateDecoder} decoder
* @return {YXmlHook}
*
* @private
* @function
*/
export const readYXmlHook = decoder =>
new YXmlHook(decoding.readVarString(decoder))
new YXmlHook(decoder.readKey())

View File

@@ -1,8 +1,9 @@
import { YText, YXmlTextRefID } from '../internals.js'
import * as encoding from 'lib0/encoding.js'
import * as decoding from 'lib0/decoding.js' // eslint-disable-line
import {
YText,
YXmlTextRefID,
AbstractUpdateDecoder, AbstractUpdateEncoder // eslint-disable-line
} from '../internals.js'
/**
* Represents text in a Dom Element. In the future this type will also handle
@@ -78,15 +79,15 @@ export class YXmlText extends YText {
}
/**
* @param {encoding.Encoder} encoder
* @param {AbstractUpdateEncoder} encoder
*/
_write (encoder) {
encoding.writeVarUint(encoder, YXmlTextRefID)
encoder.writeTypeRef(YXmlTextRefID)
}
}
/**
* @param {decoding.Decoder} decoder
* @param {AbstractUpdateDecoder} decoder
* @return {YXmlText}
*
* @private