restructer and move to esdoc

This commit is contained in:
Kevin Jahns 2018-03-06 03:17:36 +01:00
parent a9b610479d
commit bbc207aaa6
48 changed files with 223 additions and 227 deletions

View File

@ -1,43 +0,0 @@
toc:
- Y
- name: Shared Types
description: |
Types provide an abstraction over the shared data.
Shared types can be edited concurrently by peers.
- Type
- YArray
- YMap
- YText
- YXmlElement
- YXmlFragment
- YXmlHook
- YXmlText
- name: Bindings
description: |
A binding handles data binding from a Yjs type to
a data object
- Binding
- DomBinding
- QuillBinding
- TextareaBinding
- name: Events
description: |
Events describe changes on shared types.
- YArrayEvent
- YEvent
- YMapEvent
- YTextEvent
- YXmlEvent
- name: Binary Encoding
description: |
Yjs efficiently encodes the Yjs model to a binary format.
This section describes utility functions for binary encoding and decoding.
- BinaryEncoder
- BinaryDecoder
- toBinary
- fromBinary
- name: Relative Position
- RelativePosition
- fromRelativePosition
- getRelativePosition
- name: Utility

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
</head>
<!-- jquery is not required for y-xml. It is just here for convenience, and to test batch operations. -->
<!-- jquery is not required for YXml. It is just here for convenience, and to test batch operations. -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="../../y.js"></script>
<script src='../../../y-websockets-client/y-websockets-client.js'></script>
@ -24,14 +24,16 @@
</div>
<script>
var commands = document.querySelectorAll(".command");
Array.prototype.forEach.call(document.querySelectorAll('.command'), function (command) {
var execute = function(){
eval(command.querySelector("input").value);
/* global $ */
var commands = document.querySelectorAll('.command')
Array.prototype.forEach.call(commands, function (command) {
var execute = function () {
// eslint-disable-next-line no-eval
eval(command.querySelector('input').value)
}
command.querySelector("button").onclick = execute
$(command.querySelector("input")).keyup(function (e) {
if (e.keyCode == 13) {
command.querySelector('button').onclick = execute
$(command.querySelector('input')).keyup(function (e) {
if (e.keyCode === 13) {
execute()
}
})

View File

@ -9,8 +9,8 @@
"test": "npm run lint",
"debug": "concurrently 'rollup -wc rollup.test.js' 'cutest-serve y.test.js -o'",
"lint": "standard && documentation lint src/**",
"docs": "documentation build src/** -f html -o docs",
"serve-docs": "documentation serve src/**",
"docs": "esdocs",
"serve-docs": "npm run docs && serve ./docs/",
"dist": "rollup -c rollup.browser.js; rollup -c rollup.node.js",
"watch": "concurrently 'rollup -wc rollup.browser.js' 'rollup -wc rollup.node.js'",
"postversion": "npm run dist",

View File

@ -5,7 +5,7 @@ import commonjs from 'rollup-plugin-commonjs'
var pkg = require('./package.json')
export default {
input: 'src/Y.js',
input: 'src/Y.dist.js',
name: 'Y',
sourcemap: true,
output: {
@ -20,7 +20,7 @@ export default {
}),
commonjs(),
babel(),
/*uglify({
uglify({
mangle: {
except: ['YMap', 'Y', 'YArray', 'YText', 'YXmlHook', 'YXmlFragment', 'YXmlElement', 'YXmlEvent', 'YXmlText', 'YEvent', 'YArrayEvent', 'YMapEvent', 'Type', 'Delete', 'ItemJSON', 'ItemString', 'Item']
},
@ -34,7 +34,7 @@ export default {
}
}
}
})*/
})
],
banner: `
/**

View File

@ -3,7 +3,7 @@ import commonjs from 'rollup-plugin-commonjs'
var pkg = require('./package.json')
export default {
input: 'src/y-dist.cjs.js',
input: 'src/Y.dist.js',
nameame: 'Y',
sourcemap: true,
output: {

View File

@ -1,5 +1,5 @@
import BinaryEncoder from './Binary/Encoder.js'
import BinaryDecoder from './Binary/Decoder.js'
import BinaryEncoder from './Util/Binary/Encoder.js'
import BinaryDecoder from './Util/Binary/Decoder.js'
import { sendSyncStep1, readSyncStep1 } from './MessageHandler/syncStep1.js'
import { readSyncStep2 } from './MessageHandler/syncStep2.js'

View File

@ -2,7 +2,7 @@
import { writeStructs } from './syncStep1.js'
import { integrateRemoteStructs } from './integrateRemoteStructs.js'
import { readDeleteSet, writeDeleteSet } from './deleteSet.js'
import BinaryEncoder from '../Binary/Encoder.js'
import BinaryEncoder from '../Util/Binary/Encoder.js'
/**
* Read the Decoder and fill the Yjs instance with data in the decoder.

View File

@ -1,5 +1,5 @@
import { deleteItemRange } from '../Struct/Delete.js'
import ID from '../Util/ID.js'
import ID from '../Util/ID/ID.js.js'
export function stringifyDeleteSet (y, decoder, strBuilder) {
let dsLength = decoder.readUint32()

View File

@ -1,5 +1,5 @@
import { getStruct } from '../Util/structReferences.js'
import BinaryDecoder from '../Binary/Decoder.js'
import BinaryDecoder from '../Util/Binary/Decoder.js'
import { logID } from './messageToString.js'
class MissingEntry {

View File

@ -1,9 +1,9 @@
import BinaryDecoder from '../Binary/Decoder.js'
import BinaryDecoder from '../Util/Binary/Decoder.js'
import { stringifyStructs } from './integrateRemoteStructs.js'
import { stringifySyncStep1 } from './syncStep1.js'
import { stringifySyncStep2 } from './syncStep2.js'
import ID from '../Util/ID.js'
import RootID from '../Util/RootID.js'
import ID from '../Util/ID/ID.js.js'
import RootID from '../Util/ID/RootID.js.js'
import Y from '../Y.js'
export function messageToString ([y, buffer]) {

View File

@ -1,8 +1,8 @@
import BinaryEncoder from '../Binary/Encoder.js'
import BinaryEncoder from '../Util/Binary/Encoder.js'
import { readStateSet, writeStateSet } from './stateSet.js'
import { writeDeleteSet } from './deleteSet.js'
import ID from '../Util/ID.js'
import { RootFakeUserID } from '../Util/RootID.js'
import ID from '../Util/ID/ID.js.js'
import { RootFakeUserID } from '../Util/ID/RootID.js.js'
export function stringifySyncStep1 (y, decoder, strBuilder) {
let auth = decoder.readVarString()

View File

@ -1,5 +1,5 @@
import BinaryEncoder from './Binary/Encoder.js'
import BinaryDecoder from './Binary/Decoder.js'
import BinaryEncoder from './Util/Binary/Encoder.js'
import BinaryDecoder from './Util/Binary/Decoder.js'
import { toBinary, fromBinary } from './MessageHandler/binaryEncode.js'
import { integrateRemoteStructs } from './MessageHandler/integrateRemoteStructs.js'
import { createMutualExclude } from './Util/mutualExclude.js'

View File

@ -1,5 +1,5 @@
import Tree from '../Util/Tree.js'
import ID from '../Util/ID.js'
import ID from '../Util/ID/ID.js.js'
class DSNode {
constructor (id, len, gc) {

View File

@ -1,5 +1,5 @@
import Tree from '../Util/Tree.js'
import RootID from '../Util/RootID.js'
import RootID from '../Util/ID/RootID.js.js'
import { getStruct } from '../Util/structReferences.js'
import { logID } from '../MessageHandler/messageToString.js'

View File

@ -1,4 +1,4 @@
import ID from '../Util/ID.js'
import ID from '../Util/ID/ID.js.js'
export default class StateStore {
constructor (y) {

View File

@ -1,5 +1,5 @@
import { getReference } from '../Util/structReferences.js'
import ID from '../Util/ID.js'
import ID from '../Util/ID/ID.js.js'
import { logID } from '../MessageHandler/messageToString.js'
/**

View File

@ -1,6 +1,6 @@
import { getReference } from '../Util/structReferences.js'
import ID from '../Util/ID.js'
import { RootFakeUserID } from '../Util/RootID.js'
import ID from '../Util/ID/ID.js.js'
import { RootFakeUserID } from '../Util/ID/RootID.js.js'
import Delete from './Delete.js'
import { transactionTypeChanged } from '../Transaction.js'

View File

@ -1,6 +1,6 @@
import Item from './Item.js'
import EventHandler from '../Util/EventHandler.js'
import ID from '../Util/ID.js'
import ID from '../Util/ID/ID.js.js'
// restructure children as if they were inserted one after another
function integrateChildren (y, start) {
@ -47,11 +47,11 @@ export default class Type extends Item {
* Compute the path from this type to the specified target.
*
* @example
* It should be accessible via `this.get(result[0]).get(result[1])..``
* const path = type.getPathTo(child)
* // assuming `type instanceof YArray`
* console.log(path) // might look like => [2, 'key1']
* child === type.get(path[0]).get(path[1])
* It should be accessible via `this.get(result[0]).get(result[1])..`
* const path = type.getPathTo(child)
* // assuming `type instanceof YArray`
* console.log(path) // might look like => [2, 'key1']
* child === type.get(path[0]).get(path[1])
*
* @param {YType} type Type target
* @return {Array<string>} Path to the target

View File

@ -1,7 +1,7 @@
import { defaultDomFilter } from './utils.js'
import YMap from '../YMap.js'
import { YXmlFragment } from './y-xml.js'
import { YXmlFragment } from './YXml.js'
/**
* An YXmlElement imitates the behavior of a
@ -161,8 +161,8 @@ export default class YXmlElement extends YXmlFragment {
*
* @param {String} attributeName The attribute name that is to be removed.
*/
removeAttribute () {
return YMap.prototype.delete.apply(this, arguments)
removeAttribute (attributeName) {
return YMap.prototype.delete.call(this, attributeName)
}
/**
@ -171,8 +171,8 @@ export default class YXmlElement extends YXmlFragment {
* @param {String} attributeName The attribute name that is to be set.
* @param {String} attributeValue The attribute value that is to be set.
*/
setAttribute () {
return YMap.prototype.set.apply(this, arguments)
setAttribute (attributeName, attributeValue) {
return YMap.prototype.set.call(this, attributeName, attributeValue)
}
/**
@ -182,8 +182,8 @@ export default class YXmlElement extends YXmlFragment {
* queried value.
* @return {String} The queried attribute value
*/
getAttribute () {
return YMap.prototype.get.apply(this, arguments)
getAttribute (attributeName) {
return YMap.prototype.get.call(this, attributeName)
}
/**

View File

@ -5,7 +5,7 @@ import { beforeTransactionSelectionFixer, afterTransactionSelectionFixer } from
import YArray from '../YArray.js'
import YXmlEvent from './YXmlEvent.js'
import { YXmlText, YXmlHook } from './y-xml'
import { YXmlText, YXmlHook } from './YXml.js'
import { logID } from '../../MessageHandler/messageToString.js'
import diff from '../../Util/simpleDiff.js'
@ -303,6 +303,7 @@ export default class YXmlFragment extends YArray {
* inserted after this node. Set null to insert at
* the beginning.
* @param {Array<Element>} doms The Dom elements to insert.
* @param {?Document} _document Optional. Provide the global document object.
* @return {Array<YXmlElement>} The YxmlElements that are inserted.
*/
insertDomElementsAfter (prev, doms, _document) {
@ -318,6 +319,7 @@ export default class YXmlFragment extends YArray {
*
* @param {Integer} index The position to insert elements at.
* @param {Array<Element>} doms The Dom elements to insert.
* @param {?Document} _document Optional. Provide the global document object.
* @return {Array<YXmlElement>} The YxmlElements that are inserted.
*/
insertDomElements (index, doms, _document) {
@ -339,6 +341,7 @@ export default class YXmlFragment extends YArray {
* the children of this YXml Type.
*
* @param {Element} dom The Dom Element that should be bound to this Type.
* @param {?Document} _document Optional. Provide the global document object.
*/
bindToDom (dom, _document) {
if (this._dom != null) {

View File

@ -1,4 +1,4 @@
import { YXmlText, YXmlHook } from './y-xml.js'
import { YXmlText, YXmlHook } from './YXml.js'
export function defaultDomFilter (node, attributes) {
return attributes

View File

@ -1,17 +1,23 @@
import ID from '../Util/ID.js'
import { default as RootID, RootFakeUserID } from '../Util/RootID.js'
import ID from '../Util/ID/ID.js.js'
import { default as RootID, RootFakeUserID } from '../Util/ID/RootID.js.js'
/**
* A BinaryDecoder handles the decoding of an ArrayBuffer
* A BinaryDecoder handles the decoding of an ArrayBuffer.
*/
export default class BinaryDecoder {
/**
* @param {Uint8Array|Buffer} buffer The binary data that this instance decodes
* @param {Uint8Array|Buffer} buffer The binary data that this instance
* decodes.
*/
constructor (buffer) {
if (buffer instanceof ArrayBuffer) {
this.uint8arr = new Uint8Array(buffer)
} else if (buffer instanceof Uint8Array || (typeof Buffer !== 'undefined' && buffer instanceof Buffer)) {
} else if (
buffer instanceof Uint8Array ||
(
typeof Buffer !== 'undefined' && buffer instanceof Buffer
)
) {
this.uint8arr = buffer
} else {
throw new Error('Expected an ArrayBuffer or Uint8Array!')
@ -20,8 +26,8 @@ export default class BinaryDecoder {
}
/**
* Clone this decoder instance
* Optionally set a new position parameter
* Clone this decoder instance.
* Optionally set a new position parameter.
*/
clone (newPos = this.pos) {
let decoder = new BinaryDecoder(this.uint8arr)
@ -30,30 +36,30 @@ export default class BinaryDecoder {
}
/**
* Number of bytes
* Number of bytes.
*/
get length () {
return this.uint8arr.length
}
/**
* Skip one byte, jump to the next position
* Skip one byte, jump to the next position.
*/
skip8 () {
this.pos++
}
/**
* Read one byte as unsigned integer
* Read one byte as unsigned integer.
*/
readUint8 () {
return this.uint8arr[this.pos++]
}
/**
* Read 4 bytes as unsigned integer
* Read 4 bytes as unsigned integer.
*
* @return number An unsigned integer
* @return {number} An unsigned integer.
*/
readUint32 () {
let uint =
@ -66,22 +72,22 @@ export default class BinaryDecoder {
}
/**
* Look ahead without incrementing position
* to the next byte and read it as unsigned integer
* Look ahead without incrementing position.
* to the next byte and read it as unsigned integer.
*
* @return number An unsigned integer
* @return {number} An unsigned integer.
*/
peekUint8 () {
return this.uint8arr[this.pos]
}
/**
* Read unsigned integer (32bit) with variable length
* 1/8th of the storage is used as encoding overhead
* * numbers < 2^7 is stored in one byte
* * numbers < 2^14 is stored in two bytes
* Read unsigned integer (32bit) with variable length.
* 1/8th of the storage is used as encoding overhead.
* * numbers < 2^7 is stored in one byte.
* * numbers < 2^14 is stored in two bytes.
*
* @return number An unsigned integer
* @return {number} An unsigned integer.
*/
readVarUint () {
let num = 0
@ -103,7 +109,7 @@ export default class BinaryDecoder {
* Read string of variable length
* * varUint is used to store the length of the string
*
* @return string
* @return {String} The read String.
*/
readVarString () {
let len = this.readVarUint()
@ -114,6 +120,7 @@ export default class BinaryDecoder {
let encodedString = bytes.map(b => String.fromCodePoint(b)).join('')
return decodeURIComponent(escape(encodedString))
}
/**
* Look ahead and read varString without incrementing position
*/
@ -123,10 +130,11 @@ export default class BinaryDecoder {
this.pos = pos
return s
}
/**
* Read ID
* * If first varUint read is 0xFFFFFF a RootID is returned
* * Otherwise an ID is returned
* Read ID.
* * If first varUint read is 0xFFFFFF a RootID is returned.
* * Otherwise an ID is returned.
*
* @return ID
*/

View File

@ -1,10 +1,10 @@
import { RootFakeUserID } from '../Util/RootID.js'
import { RootFakeUserID } from '../Util/ID/RootID.js.js'
const bits7 = 0b1111111
const bits8 = 0b11111111
/**
* A BinaryEncoder handles the encoding to an ArrayBuffer
* A BinaryEncoder handles the encoding to an ArrayBuffer.
*/
export default class BinaryEncoder {
constructor () {
@ -13,7 +13,7 @@ export default class BinaryEncoder {
}
/**
* The current length of the encoded data
* The current length of the encoded data.
*/
get length () {
return this.data.length
@ -27,46 +27,46 @@ export default class BinaryEncoder {
}
/**
* Create an ArrayBuffer
* Create an ArrayBuffer.
*
* @return {Uint8Array}
* @return {Uint8Array} A Uint8Array that represents the written data.
*/
createBuffer () {
return Uint8Array.from(this.data).buffer
}
/**
* Write one byte as an unsigned integer
* Write one byte as an unsigned integer.
*
* @param {number} num The number that is to be encoded
* @param {number} num The number that is to be encoded.
*/
writeUint8 (num) {
this.data.push(num & bits8)
}
/**
* Write one byte as an unsigned Integer at a specific location
* Write one byte as an unsigned Integer at a specific location.
*
* @param {number} pos The location where the data will be written
* @param {number} num The number that is to
* @param {number} pos The location where the data will be written.
* @param {number} num The number that is to be encoded.
*/
setUint8 (pos, num) {
this.data[pos] = num & bits8
}
/**
* Write two bytes as an unsigned integer
* Write two bytes as an unsigned integer.
*
* @param {number} pos The number that is to be encoded
* @param {number} num The number that is to be encoded.
*/
writeUint16 (num) {
this.data.push(num & bits8, (num >>> 8) & bits8)
}
/**
* Write two bytes as an unsigned integer at a specific location
* Write two bytes as an unsigned integer at a specific location.
*
* @param {number} pos The location where the data will be written
* @param {number} num The number that is to
* @param {number} pos The location where the data will be written.
* @param {number} num The number that is to be encoded.
*/
setUint16 (pos, num) {
this.data[pos] = num & bits8
@ -76,7 +76,7 @@ export default class BinaryEncoder {
/**
* Write two bytes as an unsigned integer
*
* @param {number} pos The number that is to be encoded
* @param {number} num The number that is to be encoded.
*/
writeUint32 (num) {
for (let i = 0; i < 4; i++) {
@ -86,10 +86,10 @@ export default class BinaryEncoder {
}
/**
* Write two bytes as an unsigned integer at a specific location
* Write two bytes as an unsigned integer at a specific location.
*
* @param {number} pos The location where the data will be written
* @param {number} num The number that is to
* @param {number} pos The location where the data will be written.
* @param {number} num The number that is to be encoded.
*/
setUint32 (pos, num) {
for (let i = 0; i < 4; i++) {
@ -99,9 +99,9 @@ export default class BinaryEncoder {
}
/**
* Write a variable length unsigned integer
* Write a variable length unsigned integer.
*
* @param {number} pos The number that is to be encoded
* @param {number} num The number that is to be encoded.
*/
writeVarUint (num) {
while (num >= 0b10000000) {
@ -114,7 +114,7 @@ export default class BinaryEncoder {
/**
* Write a variable length string.
*
* @param {number} pos The number that is to be encoded
* @param {String} str The string that is to be encoded.
*/
writeVarString (str) {
let encodedString = unescape(encodeURIComponent(str))
@ -127,9 +127,9 @@ export default class BinaryEncoder {
}
/**
* Write an ID at the current position
* Write an ID at the current position.
*
* @param {ID} id
* @param {ID} id The ID that is to be written.
*/
writeID (id) {
const user = id.user

View File

@ -1,7 +1,7 @@
export default class ID {
constructor (user, clock) {
this.user = user
this.user = user // TODO: rename to client
this.clock = clock
}
clone () {

View File

@ -1,5 +1,5 @@
import ID from '../Util/ID.js'
import ID from '../Util/ID/ID.js.js'
import ItemJSON from '../Struct/ItemJSON.js'
import ItemString from '../Struct/ItemString.js'

View File

@ -1,4 +1,32 @@
/**
* A SimpleDiff describes a change on a String.
*
* @example
* console.log(a) // the old value
* console.log(b) // the updated value
* // Apply changes of diff (pseudocode)
* a.remove(diff.pos, diff.remove) // Remove `diff.remove` characters
* a.insert(diff.pos, diff.insert) // Insert `diff.insert`
* a === b // values match
*
* @typedef {Object} SimpleDiff
* @property {NaturalNumber} pos The index where changes were applied
* @property {NaturalNumber} delete The number of characters to delete starting
* at `index`.
* @property {String} insert The new text to insert at `index` after applying
* `delete`
*/
/**
* Create a diff between two strings. This diff implementation is intentionally
* not very smart.
*
* @public
* @param {String} a The old version of the string
* @param {String} b The updated version of the string
* @return {SimpleDiff} The diff description.
*/
export default function simpleDiff (a, b) {
let left = 0 // number of same characters counting from left
let right = 0 // number of same characters counting from right
@ -12,7 +40,7 @@ export default function simpleDiff (a, b) {
}
}
return {
pos: left,
pos: left, // TODO: rename to index (also in type above)
remove: a.length - left - right,
insert: b.slice(left, b.length - right)
}

View File

@ -1,7 +1,7 @@
import YArray from '../Type/YArray.js'
import YMap from '../Type/YMap.js'
import YText from '../Type/YText.js'
import { YXmlFragment, YXmlElement, YXmlText, YXmlHook } from '../Type/y-xml/y-xml.js'
import YArray from '../Types/YArray/YArray.js'
import YMap from '../Types/YMap/YMap.js'
import YText from '../Types/YText/YText.js'
import { YXmlFragment, YXmlElement, YXmlText, YXmlHook } from '../Types/YXml/YXml.js'
import Delete from '../Struct/Delete.js'
import ItemJSON from '../Struct/ItemJSON.js'
@ -12,7 +12,7 @@ import ItemEmbed from '../Struct/ItemEmbed.js'
const structs = new Map()
const references = new Map()
export function addStruct (reference, structConstructor) {
export function registerStruct (reference, structConstructor) {
structs.set(reference, structConstructor)
references.set(structConstructor, reference)
}
@ -21,21 +21,21 @@ export function getStruct (reference) {
return structs.get(reference)
}
export function getReference (typeConstructor) {
export function getStructReference (typeConstructor) {
return references.get(typeConstructor)
}
// TODO: reorder (Item* should have low numbers)
addStruct(0, ItemJSON)
addStruct(1, ItemString)
addStruct(10, ItemFormat)
addStruct(11, ItemEmbed)
addStruct(2, Delete)
registerStruct(0, ItemJSON)
registerStruct(1, ItemString)
registerStruct(10, ItemFormat)
registerStruct(11, ItemEmbed)
registerStruct(2, Delete)
addStruct(3, YArray)
addStruct(4, YMap)
addStruct(5, YText)
addStruct(6, YXmlFragment)
addStruct(7, YXmlElement)
addStruct(8, YXmlText)
addStruct(9, YXmlHook)
registerStruct(3, YArray)
registerStruct(4, YMap)
registerStruct(5, YText)
registerStruct(6, YXmlFragment)
registerStruct(7, YXmlElement)
registerStruct(8, YXmlText)
registerStruct(9, YXmlHook)

View File

@ -1,6 +1,6 @@
import YMap from '../Type/YMap'
import YArray from '../Type/YArray'
import YMap from '../Types/YMap'
import YArray from '../Types/YArray'
export function writeObjectToYMap (object, type) {
for (var key in object) {

51
src/Y.dist.js Normal file
View File

@ -0,0 +1,51 @@
import Y from './Y.js'
import UndoManager from './Util/UndoManager.js'
import { integrateRemoteStructs } from './MessageHandler/integrateRemoteStructs.js'
import { messageToString, messageToRoomname } from './MessageHandler/messageToString.js'
import Connector from './Connector.js'
import Persistence from './Persistence.js'
import YArray from './Types/YArray/YArray.js'
import YMap from './Types/YMap/YMap.js'
import YText from './Types/YText/YText.js'
import { YXmlFragment, YXmlElement, YXmlText, YXmlHook } from './Types/YXml/YXml.js'
import BinaryDecoder from './Util/Binary/Decoder.js'
import { getRelativePosition, fromRelativePosition } from './Util/relativePosition.js'
import { registerStruct } from './Util/structReferences.js'
import TextareaBinding from './Bindings/TextareaBinding.js'
import QuillBinding from './Bindings/QuillBinding.js'
import { toBinary, fromBinary } from './MessageHandler/binaryEncode.js'
import debug from 'debug'
// TODO: The following assignments should be moved to yjs-dist
Y.AbstractConnector = Connector
Y.AbstractPersistence = Persistence
Y.Array = YArray
Y.Map = YMap
Y.Text = YText
Y.XmlElement = YXmlElement
Y.XmlFragment = YXmlFragment
Y.XmlText = YXmlText
Y.XmlHook = YXmlHook
Y.TextareaBinding = TextareaBinding
Y.QuillBinding = QuillBinding
Y.utils = {
BinaryDecoder,
UndoManager,
getRelativePosition,
fromRelativePosition,
registerStruct,
integrateRemoteStructs,
toBinary,
fromBinary
}
Y.debug = debug
debug.formatters.Y = messageToString
debug.formatters.y = messageToRoomname
export default Y

View File

@ -2,30 +2,15 @@ import DeleteStore from './Store/DeleteStore.js'
import OperationStore from './Store/OperationStore.js'
import StateStore from './Store/StateStore.js'
import { generateUserID } from './Util/generateUserID.js'
import RootID from './Util/RootID.js'
import RootID from './Util/ID/RootID.js.js'
import NamedEventHandler from './Util/NamedEventHandler.js'
import UndoManager from './Util/UndoManager.js'
import { integrateRemoteStructs } from './MessageHandler/integrateRemoteStructs.js'
import { messageToString, messageToRoomname } from './MessageHandler/messageToString.js'
import Connector from './Connector.js'
import Persistence from './Persistence.js'
import YArray from './Type/YArray.js'
import YMap from './Type/YMap.js'
import YText from './Type/YText.js'
import { YXmlFragment, YXmlElement, YXmlText, YXmlHook } from './Type/y-xml/y-xml.js'
import BinaryDecoder from './Binary/Decoder.js'
import { getRelativePosition, fromRelativePosition } from './Util/relativePosition.js'
import { addStruct as addType } from './Util/structReferences.js'
import debug from 'debug'
import Transaction from './Transaction.js'
import TextareaBinding from './Binding/TextareaBinding.js'
import QuillBinding from './Binding/QuillBinding.js'
import { toBinary, fromBinary } from './MessageHandler/binaryEncode.js'
/**
* A positive natural number including zero: 0, 1, 2, ..
*
* @typedef {number} NaturalNumber
*/
/**
* Anything that can be encoded with `JSON.stringify` and can be decoded with
@ -116,6 +101,9 @@ export default class Y extends NamedEventHandler {
* other peers.
*
* @param {Function} f The function that should be executed as a transaction
* @param {?Boolean} remote Optional. Whether this transaction is initiated by
* a remote peer. This should not be set manually!
* Defaults to false.
*/
transact (f, remote = false) {
let initialCall = this._transaction === null
@ -276,15 +264,6 @@ export default class Y extends NamedEventHandler {
this.ds = null
this.ss = null
}
whenSynced () {
// TODO: remove this method
return new Promise(resolve => {
this.once('synced', () => {
resolve()
})
})
}
}
Y.extend = function extendYjs () {
@ -297,32 +276,3 @@ Y.extend = function extendYjs () {
}
}
}
// TODO: The following assignments should be moved to yjs-dist
Y.AbstractConnector = Connector
Y.AbstractPersistence = Persistence
Y.Array = YArray
Y.Map = YMap
Y.Text = YText
Y.XmlElement = YXmlElement
Y.XmlFragment = YXmlFragment
Y.XmlText = YXmlText
Y.XmlHook = YXmlHook
Y.TextareaBinding = TextareaBinding
Y.QuillBinding = QuillBinding
Y.utils = {
BinaryDecoder,
UndoManager,
getRelativePosition,
fromRelativePosition,
addType,
integrateRemoteStructs,
toBinary,
fromBinary
}
Y.debug = debug
debug.formatters.Y = messageToString
debug.formatters.y = messageToRoomname

View File

@ -1,3 +0,0 @@
import Y from './Y.js'
export default Y

View File

@ -1,6 +1,6 @@
import { test } from '../node_modules/cutest/cutest.mjs'
import BinaryEncoder from '../src/Binary/Encoder.js'
import BinaryDecoder from '../src/Binary/Decoder.js'
import BinaryEncoder from '../src/Util/Binary/Encoder.js'
import BinaryDecoder from '../src/Util/Binary/Decoder.js'
import { generateUserID } from '../src/Util/generateUserID.js'
import Chance from 'chance'

View File

@ -1,5 +1,5 @@
import RedBlackTree from '../src/Util/Tree.js'
import ID from '../src/Util/ID.js'
import ID from '../src/Util/ID/ID.js.js'
import Chance from 'chance'
import { test, proxyConsole } from 'cutest'